【发布时间】:2018-04-26 17:05:36
【问题描述】:
首先,我是 Firebase 数据库的新手。我需要做的是我有一些电话要做,以获取一些数据。我可以像这样获取这些数据。
val query = mDatabaseReference
?.child("Node1")
?.child("Node1_id")
val hostList = mutableListOf<Class>()
query?.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(databaseError: DatabaseError) {}
override fun onDataChange(dataSnapshot: DataSnapshot) {
dataSnapshot.children.forEach({ node1Details ->
val hostDetailsQuery = mDatabaseReference
?.child("Node1Details")
?.child(node1Details.key)
hostDetailsQuery?.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(databaseError: DatabaseError) {
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
val host = dataSnapshot.getValue(MyClass::class.java)
val ratingQuery = mDatabaseReference
?.child("Rating")
?.child(node1Details.key)
?.child(id)
ratingQuery?.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(databaseError: DatabaseError) {
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
host?.myRating = if (dataSnapshot.value == null) 0 else (dataSnapshot.value as Long).toInt()
hostList.add(host!!)
}
})
}
})
})
}
})
我不知道如何解决的是等到所有调用完成后再调用特定方法。
希望我很清楚,希望有人可以帮助我。
提前致谢。
【问题讨论】:
-
那么基本上是什么问题,您尝试在
onDataChange函数之外使用hostList并且是空的? -
是的,这是主要问题。我不能在
onDataChanged之外使用这个列表,因为我不知道数据是否被完全提取。
标签: firebase firebase-realtime-database kotlin