如何从Firebase获取所有Child的Java对象的ArrayList [英] How Can I get ArrayList of Java Objects of all Childs from Firebase

查看:195
本文介绍了如何从Firebase获取所有Child的Java对象的ArrayList的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 ValueEventListener postListener = new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
//获取Post对象并使用值更新(DataSnapshot!= null){
for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){
UserDataClass post = postSnapshot.getValue(UserDataClass.class);
members.add(post);




@Override
public void onCancelled(DatabaseError databaseError){
//获取发布失败,记录消息

}
};
mDatabaseRef.addValueEventListener(postListener);




下面是从firebase返回的datasnapshot,但我无法



  DataSnapshot {key = 12345,value = {Members = {00000000 = {phoneNo = 00000000,经度= 73.0703307,纬度= 33.6396975,密码= qwertyuiop,CName = 00000000,管理员=真,姓名= Anwar Kamal},03028084374 = {phoneNo = 03028084374,经度= 73.0701292,纬度= 33.6397129,密码= qwerty,CName = 00000000,admin = false,name = Nehal Khan},03028084516 = {phoneNo = 03028084516,经度= 73.0702659,纬度= 33.6397622,密码= qwerty,CName = 03035356317,admin = false, }}} 




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





我的java对象是



  public class UserDataClass {
public double纬度;
公共经度;
public String Name =;
public String password =;
public String phoneNo =;
public String CircleName =;
public boolean isAdmin = false;


解决方案 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); 

请注意您的完整路径成员表是彩色的,我不能找到路径。



您可以找到整个文档这里



祝你好运


How Can I get ArrayList of Java Objects of all Childs from Firebase using updated firebase commands, currently I am using below approach but not able to get the list.

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);

below is datasnapshot which is returning from firebase but I am not able to get the desired result out of it.

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

all i want is list of all members

and my java object is

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

解决方案

The ValueEventListener has another purpose. You should use ChildEventListener and also dataSnapshop.getValue() to implement what you want, for example:

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

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

  //...

Note: You should use the listener with the current firebase_referance to the Users table. Hence you should replace

    mDatabaseRef.addValueEventListener(postListener);

with

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

notice that your full path of the Members table is colored and i couldn't figure the path.

You can find the whole documentation here

good luck

这篇关于如何从Firebase获取所有Child的Java对象的ArrayList的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆