【问题标题】:How Can I get ArrayList of Java Objects of all Childs from Firebase如何从 Firebase 获取所有子对象的 Java 对象的 ArrayList
【发布时间】:2016-07-05 09:01:11
【问题描述】:

如何使用更新的 firebase 命令从 Firebase 获取所有 Childs 的 Java 对象的 ArrayList,目前我正在使用以下方法但无法获取列表。

ValueEventListener postListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // Get Post object and use the values to update the UI

                if(dataSnapshot!=null){
                    for (DataSnapshot postSnapshot:        dataSnapshot.getChildren()) {
                        UserDataClass post =    postSnapshot.getValue(UserDataClass.class);
                        members.add(post);
                    }

                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message

            }
        };
        mDatabaseRef.addValueEventListener(postListener);

下面是从 firebase 返回的数据快照,但我无法从中获得所需的结果。

DataSnapshot { key = 12345, value = {Members={00000000={phoneNo=00000000, longitude=73.0703307, latitude=33.6396975, password=qwertyuiop, CName=00000000, admin=true, name=Anwar Kamal}, 03028084374={phoneNo=03028084374, longitude=73.0701292, latitude=33.6397129, password=qwerty, CName=00000000, admin=false, name=Nehal Khan}, 03028084516={phoneNo=03028084516, longitude=73.0702659, latitude=33.6397622, password=qwerty, CName=03035356317, admin=false, name=Jamal Khan}}} }

我想要的只是所有成员的列表

我的java对象是

public class UserDataClass {
     public double latitude;
     public double longitude;
     public String Name="";
     public String password="";
     public String phoneNo="";
     public String CircleName="";
     public boolean isAdmin=false;
}

【问题讨论】:

  • 请发布您的 Firebase 数据结构
  • 请检查添加的 Firebase 数据结构
  • @AnwarKamal 你遇到了什么问题或错误?
  • 没有错误,但使用单个空对象获取 arrayList

标签: java android firebase firebase-realtime-database


【解决方案1】:

ValueEventListener 还有另一个用途。 你应该使用ChildEventListenerdataSnapshop.getValue() 来实现你想要的,例如:

ChildEventListener childEventListener = new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {

        UserDataClass post =    postSnapshot.getValue(UserDataClass.class);
        members.add(post);
    }

  //...

注意: 您应该使用带有当前firebase_referance 的侦听器到Users 表。因此,您应该替换

    mDatabaseRef.addValueEventListener(postListener);

    mDatabaseRef.child("Members").addChildEventListener(childEventListener);

请注意,Members 表的完整路径是彩色的,我无法确定路径。

你可以找到整个文档here

祝你好运

【讨论】:

  • 我已经尝试过这个东西,但同样的结果我也通过添加一些信息更新了我的问题,请再次检查。
  • 您可以添加您的mDatabaseRef 吗?还有你的database structure
  • 再次检查我已经添加了我的数据库结构
  • mDatabaseRef.child("xxxx").child("xyz").child("Members");
  • 请检查上面的评论我已经提供了我完整的数据库参考
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多