【问题标题】:What should I do to print only the last data entered in Text?我应该怎么做才能只打印文本中输入的最后一个数据?
【发布时间】:2022-01-26 06:50:30
【问题描述】:
   private fun getData(){
    firestore.collection("Posts").addSnapshotListener { value, error ->

        if (error!=null){
            Toast.makeText(requireContext(),error.localizedMessage,Toast.LENGTH_SHORT).show()
        }else{
            if (value !=null){
                if (!value.isEmpty){
                    val documents = value.documents
                    for (document in documents){
                        val pc = document.get("Panel Sayisi") as String
                        val ps = document.get("Panel Boyutu") as String
                        val ls = document.get("Arazi Eğimi") as String
                        val lsi = document.get("Arazi Boyutu") as String
                        val c = document.get("Şehir") as String

                        val post = Post(pc,ps,ls,lsi,c)
                        postArrayList.add(post)
                    }
                }
            }
        }
        val db = FirebaseFirestore.getInstance()
        db.collection("Posts").orderBy("Panel Sayisi",Query.Direction.DESCENDING).limit(1)
            .get()
            .addOnCompleteListener {

                val result : StringBuffer = StringBuffer()
                if (it.isSuccessful){
                    for (document in it.result){
                        result.append(document.data.getValue("Panel Sayisi"))
                    }
                    verimText.setText(result)
                }
            }
    }
}

它显示了我添加到 Cloud Firestore 中的所有数据,这些数据在 verimText 中具有关键字“Panel Sayisi”。我只想显示最后输入的数据。

这就是问题所在。我添加的最后一个文件添加在中间。这就是为什么我最后一次调用或第一次调用的值没有改变的原因。所以它总是调用相同的值。这个中间值应该写在末尾或开头。所以我可以通过调用 ASCENDING 或 DESCENDING 方法来获取这些数据。

【问题讨论】:

  • 那么共享代码有什么问题?
  • 它没有显示我在verimText中输入的最后一个“Panel Sayisi”数据。
  • 你有没有试过检查如果任务不成功会发生什么?
  • 应用程序不会以任何方式崩溃或崩溃。我在verimText中给出的数据也是写的。但是这个数据不是我输入的最后一个数据。它显示了与 Firestore 中的关键字“Panel Sayisi”相对应的另一个数据。
  • 所以很可能查询没有返回正确的数据,对吧?

标签: android firebase kotlin google-cloud-platform google-cloud-firestore


【解决方案1】:

当您使用以下调用时:

.orderBy("Panel Sayisi",Query.Direction.DESCENDING)

这意味着只是根据“Panel Sayisi”字段对文档进行排序,这实际上并不能解决问题。问题是您不知道“c4Q5...q4vP”文档是最后添加的文档。要解决此问题,您必须添加一个 Firestore Timestamp 类型的附加字段,如我在以下帖子中的回答中所述:

然后使用以下查询:

val db = FirebaseFirestore.getInstance()
val query = db.collection("Posts").orderBy("timestamp", Query.Direction.DESCENDING).limit(1)

【讨论】:

  • 我应该在哪里定义“时间戳”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多