【发布时间】:2022-11-11 09:57:43
【问题描述】:
我是android开发的初学者。我正在尝试实现回收器视图,该视图在从 firebase 数据库下载后显示组列表。 从主活动调用函数 loadGroups() 以返回一个列表,然后将其馈送到回收器视图适配器。 数据正在正确下载,但似乎首先返回 myList ,然后在几毫秒后添加来自 firebase 的元素。我希望程序等待元素被添加到 myList 然后返回它
class DataSource {
private lateinit var myDatabase: DatabaseReference
var myList : MutableList<Group> = mutableListOf<Group>();
fun loadGroups(): MutableList<Group> {
// Here I want to let the loadGroupsFromFirebase() complete adding groups to mylist
// after that is completed, mylist should be returned
loadGroupsFromFirebase()
Log.d("mylist", "returning my list")
return myList
}
private fun loadGroupsFromFirebase(){
myDatabase = FirebaseDatabase.getInstance().getReference("myGroupsList")
val postListener = object : ValueEventListener {
override fun onDataChange(myDataSnapshot: DataSnapshot) {
if(myDataSnapshot.exists()){
Log.d("mylist", "does exist ${myDataSnapshot.getValue().toString()}")
myList.clear()
for(dataSnapshot in myDataSnapshot.children){
val myGroupDetails = dataSnapshot.getValue<Group>()!!;
myList.add(myGroupDetails)
myList.add(Group(myIconId=2131165282, myTitle="G1", myLink = "https://s*****************************************9", numberOfPeople=100))
Log.d("mylist", "does exist CODE 00 ${myList.toString()}")
}
}
else {
Log.d("mylist", "does not exist")
}
}
override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w("mylist", "loadPost:onCancelled", databaseError.toException())
}
}
myDatabase.addValueEventListener(postListener)
}
}
任何帮助,将不胜感激 :) 下面是logcat的截图。
【问题讨论】:
标签: android firebase kotlin android-recyclerview kotlin-coroutines