2017-04-04 129 views
0

我将每个配置文件恢复为对象并将它们放入数组列表中。第一个println显示大小为1,然后第二个将大小显示为0.这怎么可能?...我的Profile类拥有每个属性的getter和一个空的Profile构造函数。在火力地堡我的数据从Firebase Android返回的数据如何?

// Initialize Profiles Array, global variable in my project 
    ArrayList<Profile> profileObjects = new ArrayList<>(); 

    // GET FIREBASE PROFILE DATA, PUT INTO ARRAY 
    ref.child("Users").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot child : dataSnapshot.getChildren()){ 
       Profile profiles = child.getValue(Profile.class); 
       profileObjects.add(profiles); 
      } 
      System.out.println("GETTTINGGGGG BACKKKKKKKKKKKKKKKKKKKKKKK 1: " + profileObjects.size()); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    System.out.println("GETTTINGGGGG BACKKKKKKKKKKKKKKKKKKKKKKK 2: " + profileObjects.size()); 

图片:

Firebase

回答

0

您可以获取所有用户的数据,然后从中获取“图片”,或者只能获取“图片”参考。

ref.child("Users").child(userId).addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // to get all user object ,then you can get pic url from it by calling user.getPic() for example 
     Usermodel user = dataSnapshot.getValue(Usermodel .class); 
     String picUrl = user.getPic(); 

     // or you can get "pic" value only 
     String picUrl = dataSnapshot.child("pic").getValue(String.class); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

UserModel类可以是这样的

public class UserModel { 
public UserModel() { 
} 

String name, age, gender, pic; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getAge() { 
    return age; 
} 

public void setAge(String age) { 
    this.age = age; 
} 

public String getGender() { 
    return gender; 
} 

public void setGender(String gender) { 
    this.gender = gender; 
} 

public String getPic() { 
    return pic; 
} 

public void setPic(String pic) { 
    this.pic = pic; 
} 

}

+0

我仍然收到空。它说“在User.class中没有setter/field”。我为我的数据库中的所有用户属性设置了setter。我是否必须为User对象创建一个大的setter构造器? – Steve

+0

您需要为您的模型创建类,它的setter和getters将来自服务器的数据映射到您的数据库之外。 – mohnage7

+0

我编辑了答案用户类示例 – mohnage7

0

你得到

 String picUrl = dataSnapshot.child("Uid").child("pic").toString(); 

caue其中uid只是字符串不变量 你需要使用

for (DataSnapshot child : dataSnapshot.getChildren()) 
     { 
       // each child is user 
       // if you have use model do this 
           Usermodel um = child.getValue(Usermodel .class); 
         String picurl = um.getpicurl(); 

     } 
+0

真棒太感谢你了!在我的UserModel中,我只需要获取数据库中用户的所有关键字段的getter和setters? – Steve

+0

正确...创建您自己的模型 – Elsunhoty

+0

知道了!如果我有足够的声望点,我会提醒你的回应。当我得到他们我会的! – Steve

相关问题