从Firebase获取特殊数据

时间:2018-07-25 16:45:47

标签: android firebase firebase-realtime-database

我想从我的数据库firbase(“电话”子代)中获取数据,  你可以看照片:

https://b.top4top.net/p_936hbh5o1.png

am使用此代码获取数据,但出现错误(java.lang.NullPointerException)。

 int i=0;
    DatabaseReference mDatabase;
// ...
    mDatabase = FirebaseDatabase.getInstance().getReference(); // instancie 
la BDD
    FirebaseUser currentFirebaseUser = 
FirebaseAuth.getInstance().getCurrentUser() ; // recup le yser courent

    String id= currentFirebaseUser.getUid(); // recup id user actrulle
    DatabaseReference usersRef = 
mDatabase.child("Users").child(id).child("favoris");


    usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int i=0;
            //ArrayList Userlist = new ArrayList<favoris>();
            // Result will be holded Here
            for (DataSnapshot dsp : dataSnapshot.getChildren()) {

                Map<String, Object> td = (HashMap<String,Object>) 
 dataSnapshot.getValue();
                ArrayList<Object> objectArrayList = new ArrayList<Object> 
 (td.values());

                //favoris fav = (favoris) td.values();
                favoris fav = (favoris) objectArrayList.get(0);

                names[i]= fav.name;
                i++;

            }

1 个答案:

答案 0 :(得分:0)

创建一个POJO类,您可以在其中获得所需的元素,在这种情况下,仅是电话,您还可以获取地址和名称,只需在此处添加设置器和获取器即可。

paste0

然后遍历所有节点并获取

public class FavorisPojo {

    String phone;

    public FavorisPojo() {
    }


    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }



}

我们使用字符串来获取电话,因为它已像在Firebase数据库中那样加载了电话,如果要更改它,只需在FavorisPojo类上更改变量名

您还需要像这样

 usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int i=0;
            //ArrayList Userlist = new ArrayList<favoris>();
            // Result will be holded Here
            for (DataSnapshot dsp : dataSnapshot.getChildren()) {

              FavorisPojo favoris = dsp.getValue(FavorisPojo.class);
              String phone = favoris.getPhone();

            }