从android中的firebase实时数据库中获取数据

时间:2017-08-23 18:16:19

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

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

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

我创建了一个POJO类。现在我如何从数组中获取所有json对象?我已经搜索了一段时间,但无法理解将是什么参考&小孩在这里。

2 个答案:

答案 0 :(得分:1)

当你说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?) {

        }
    }

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

答案 1 :(得分:1)

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

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

举个例子:

enter image description here

正如您在图片中看到的,每个用户都有一个特定的ID。 Firebase为每位用户提供了String userId= user.getUid();可以获得的唯一ID。

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

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

另请阅读this