如何使用更新的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}}} }
我想要的就是所有成员的名单
我的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;
}
答案 0 :(得分:1)
ValueEventListener
有另一个目的。
您应该使用ChildEventListener
和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
表的完整路径是彩色的,我无法确定路径。
您可以找到整个文档here
祝你好运