First of all I'm new to Firebase Database. What I need to do is I have some calls to do, to fetch some data. I'm able to get those data like this.
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!!)
}
})
}
})
})
}
})
What I don't know how to solve is waiting until all calls are finished to call a specific method.
Hope I was clear, and hope someone can help me out.
Thanks in advance.