使用Android和firebase,下面的链接显示了我们数据库的结构。
还添加了复制粘贴结构的json文件的外观。
https://i.stack.imgur.com/X3vkz.png
"Events" : {
"-MxoB2kU8Okx0gFbnEIx" : {
"addGoogleMaps" : true,
"address" : "Gjuterivägen 3",
"bringAlcohol" : false,
"date" : "WEDNESDAY 23 FEBRUARY 2022",
"description" : "Fest på holma",
"endTime" : "End Time: 22:15",
"maxAttendees" : 6,
"overallsOn" : true,
"ownerEmail" : "testemail123@email.com",
"plusOne" : false,
"startTime" : "Start Time: 06:15",
"title" : "Fest hos Mange"
},最终会有50个这样的事件同时出现在数据库中,我需要做的是循环所有这些事件,而不知道它们的节点名称并收集我需要的东西。
问题:
使用Kotlin,如何在不使用循环中的字符串路径的情况下访问Events中的每个子节点,并从每个子节点获取以下变量:
标题、地点和日期。
有了这些,我需要实例化一个表示该子对象的对象,然后将其放入:
private val events = mutableListOf<Event>()
我编辑了整个问题,我希望这比前一次更容易理解。谢谢!
发布于 2022-03-14 18:18:45
你试过这样的方法吗?
mDatabase.child("Events").get().addOnSuccessListener {
Log.i("firebase", "Got events: ${it}")
}.addOnFailureListener{
Log.e("firebase", "Error getting data", it)
}通常,建议使用ValueEventListener而不是get():https://firebase.google.com/docs/database/android/read-and-write#read_data_once
发布于 2022-03-14 18:38:13
感谢弗兰克范普费伦(在评论中)链接了一些非常有用的东西,这似乎是我想要的方式!
https://firebase.google.com/docs/database/android/lists-of-data#read_and_write_lists
以下是解决办法:
val database = FirebaseDatabase.getInstance().getReference("Events")
database.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (postSnapshot in dataSnapshot.children) {
println(postSnapshot.child("title").value)
//Here i can just get what ever variable i need with the line above.
}
}
override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException())
// ...
}
})https://stackoverflow.com/questions/71408585
复制相似问题