如何从Firebase获取所有Childs的Java对象的ArrayList

如何使用更新的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,但是我无法从中获得所需的结果。

 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}}} } 

我想要的就是所有成员的名单

FireBase数据库结构

我的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; } 

ValueEventListener有另一个目的。 您应该使用dataSnapshop.getValue()以及dataSnapshop.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表的完整路径是彩色的,我无法计算路径。

你可以在这里找到整个文档

祝好运