在事件列表中,我希望根据创建事件的人检索事件数据,这意味着每个人都可以根据字段检索自己创建的事件,因为当事件创建时,将有一个字段记录事件是由谁创建的..但在我的情况下,回收器视图显示所有事件,而不是根据“createdBy”进行过滤
这是我的消防站
db.collection("event").addSnapshotListener(object : EventListener<QuerySnapshot>{
override fun onEvent(value: QuerySnapshot?, error: FirebaseFirestoreException?) {
if(error != null){
Log.e("Firestore Error", error.message.toString())
return
}
db.collection("event").whereEqualTo("createdBy", ".com").get()
.addOnSuccessListener { documents ->
for (document in documents) {
evArrayList.clear() // Clear the list before adding new items
val name = document.getString("createdBy")
Log.d("forloop1", "Retrieved document with createdBy=$name")
for(dc : DocumentChange in value?.documentChanges!!){
Log.d("forloop2", "Added event to evArrayList")
if (dc.type == DocumentChange.Type.ADDED) {
evArrayList.add(dc.document.toObject(Event::class.java))
}
}
evAdapter.notifyDataSetChanged()
}
Toast.makeText(context,"thadfsa",Toast.LENGTH_SHORT).show()
}
.addOnFailureListener { exception ->
// Handle any errors
}
}
})
}
1条答案
按热度按时间qhhrdooz1#
你在代码中从数据库阅读数据两次,第一次是:
这将侦听整个集合,因此获取所有
event
文档。接下来是:
这只从特定用户获取
event
文档。但是在处理结果时,你会循环:
这个循环中的
value
引用了firstread操作的结果,该操作读取了所有event
文档。如果你只想显示查询结果,你应该只运行一个 * 查询**并处理这些结果: