2017-04-04 34 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