首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Kotlin在Android中遍历Firebase实时数据库中的节点

用Kotlin在Android中遍历Firebase实时数据库中的节点
EN

Stack Overflow用户
提问于 2022-03-09 11:25:46
回答 2查看 229关注 0票数 0

使用Android和firebase,下面的链接显示了我们数据库的结构。

还添加了复制粘贴结构的json文件的外观。

https://i.stack.imgur.com/X3vkz.png

代码语言:javascript
复制
 "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>()

我编辑了整个问题,我希望这比前一次更容易理解。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-03-14 18:18:45

你试过这样的方法吗?

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2022-03-14 18:38:13

感谢弗兰克范普费伦(在评论中)链接了一些非常有用的东西,这似乎是我想要的方式!

https://firebase.google.com/docs/database/android/lists-of-data#read_and_write_lists

以下是解决办法:

代码语言:javascript
复制
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())
            // ...
        }
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71408585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档