Firebase数据库参考检索子项

时间:2018-04-21 18:31:32

标签: java android firebase firebase-realtime-database

我有一个firebase数据库,其中包含以下内容:

  1. 事件
  2. 创作者ID(Firebaseauth id)
  3. 活动名称
  4. 事件属性,如姓名位置日期时间......
  5. 以下是我的数据库示例:

    Screenshot of database

    我想要的是检索数据库中每个事件的属性,无论UID如何,但由于许多其他原因我无法摆脱UID。

    我使用以下代码检索:

    ref = database.getReference("Event/");
            ref.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    Event event = new Event();
                    event = dataSnapshot.getValue(Event.class);
                    events.add(event);
                    myRecyclerView.setAdapter(adapter);
                }
    

    其中Event是一个自定义类,包含事件的属性,getter / setter和构造函数。 Ref是数据库引用。 但是返回的事件对象是空的。

    我正在使用android。

2 个答案:

答案 0 :(得分:0)

您仍有一个级别可以达到单个活动:

public void onChildAdded(DataSnapshot dataSnapshot, String s) {
             for(DataSnapshot snapshot: dataSnapshot.getChildren()){
                Event event = new Event();
                event = snapshot.getValue(Event.class);
                events.add(event);
                myRecyclerView.setAdapter(adapter);
          }
            }

还要确保您的Event类具有公共getter和setter,以便可以反序列化。

答案 1 :(得分:0)

看起来你是以错误的方式反击,试试这个:

String EVENT_ID = "YOUR EVENT ID HERE"
ref = database.getReference("Event")
      .child(EVENT_ID)
      .addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Event event = new Event();
                event = dataSnapshot.getValue(Event.class);
                events.add(event);
                myRecyclerView.setAdapter(adapter);
            }

OBS:将事件ID放在 EVENT_ID 中。它会起作用。