【问题标题】:Get data from firebase realtime database in android从android中的firebase实时数据库获取数据
【发布时间】:2017-08-23 18:16:18
【问题描述】:

我正在尝试从 android 中的 firebase 实时数据库中获取数据。我创建了一个 json 数据文件并将 json 文件导入到 firebase 数据库中。数据文件如下所示:

{
    "data": [
        {
        "name" : "one",
        "age" : "ten"
        },{
        "name" : "two",
        "age" : "twenty"
        }
    ]
}

我创建了一个 POJO 类。现在如何从数组中获取所有 json 对象?我已经搜索了一段时间,但不明白这里的参考和孩子是什么。

【问题讨论】:

    标签: android json firebase firebase-realtime-database pojo


    【解决方案1】:

    我建议您更改您的 Firebase 结构,如下所示:

    • 将 [] 替换为 {},因为 Firebase 建议使用此做法
    • data 节点中的每个用户(或项目)添加一个特定的唯一ID。

    举个例子:

    如图所示,每个用户都有一个特定的 ID。 Firebase 为每个用户提供了一个唯一的 ID,您可以使用 String userId= user.getUid(); 获取该 ID。

    您也可以创建唯一 ID 并使用 String key = Database.child("users").push().getKey(); 获取它们(不建议用于用户 ID)

    如果您想阅读您构建的数据,我建议您阅读this

    另请阅读this

    【讨论】:

    • 谢谢!但有一件事 - 如果我用 "{}" 替换 "[]" ,它会是一个有效的 json 吗? jsonlint.com 如果我这样做会显示错误。
    • 正如我所说,在构建您的 firebase 数据库时,建议使用 {} 而不是 []。如果您选择从 json 提供程序导入结构,您可能会收到如您所述的错误。您是否需要导入数据库结构?如果不是,您可以通过将具有特定键的节点和子节点添加到这些节点来从 Android Studio 创建您的结构。(称为映射)
    【解决方案2】:

    当您说val fireDataBaseRef FirebaseDatabase.getInstance().reference.child("data") 时,您持有的是根树的引用。有了这个参考你可以fireDataBaseRef.addChildEventListener(childEventListener)

    在哪里

    val childEventListener: ChildEventListener = object : ChildEventListener {
    
            override fun onCancelled(snapshot: DatabaseError?) {}
    
            override fun onChildMoved(snapshot: DataSnapshot?, p1: String?) {}
    
            override fun onChildChanged(snapshot: DataSnapshot?, p1: String?) {
    
            }
    
            override fun onChildAdded(snapshot: DataSnapshot?, p1: String?) {
                // childs added
            }
    
            override fun onChildRemoved(snapshot: DataSnapshot?) {
    
            }
        }
    

    只需将一些日志放入覆盖的函数中,您就会看到操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多