我在“ Firestore”中拥有此数据,我想像所有拥有“卡拉奇”城市并存储在“ {chatModel”类型的arrayList
中的用户一样,根据“城市”获取所有文档,我想显示此信息recyclerView中的数据
我已经尝试过了,但这只是从收藏集中获取了最后一个文档。
firestore.collection("USERS")
.whereEqualTo("city",cityName)
.get()
.addOnSuccessListener { documents ->
for (document in documents) {
arrayList.add(document.toObject(chatModel::class.java))
Log.i("Info", "${document.id} => ${document.data}")
}
val adapter = chatAdapter(context!!, arrayList)
chatRecyclerView.layoutManager = LinearLayoutManager(context,
LinearLayoutManager.VERTICAL,false)
chatRecyclerView.adapter = adapter
adapter.notifyDataSetChanged()
}
这是Logcat结果:
v21GH5sBi3SdIb3v3xsp3ob64S23 => {username=Muhammad Rizwan, Email=mr1017753@gmail.com, city=Karachi, ProfileImageUrl=https://firebasestorage.googleapis.com/v0/b/me2wee-1b547.appspot.com/o/USERS-MEDIA%2Fv21GH5sBi3SdIb3v3xsp3ob64S23?alt=media&token=193c4013-c580-45dc-b63d-fee1ef13caba}
这是包含“ Karachi”城市的所有文档的屏幕截图,但仅显示最后一个
答案 0 :(得分:0)
我已经尝试过了,但是没有用
它不起作用,因为您在每次for循环迭代时都创建一个chatAdapter
对象。要解决此问题,请将代码的最后四行移动到循环之外。循环内部应仅存在:
arrayList.add(document.toObject(chatModel::class.java))
通过这种方式,您可以填充列表并仅在列表中充满对象时设置适配器。
答案 1 :(得分:0)