2017-04-04 3 views
0

私は各プロファイルをオブジェクトとして戻し、それらを配列リストに入れます。最初のprintlnのサイズは1、2番目のサイズは0と表示されます。どのようにこれが可能ですか?My 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の私のデータの画像:

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

イムはまだヌルになっています。それは "setter/field in User.class"と表示されます。私は自分のデータベースのすべてのユーザー属性の設定をしています。私はUserオブジェクトのための1つの大きなセッター・コンストラクターを作らなければなりませんか? – Steve

+0

あなたのモデルのクラスをセッターとゲッタで作る必要があります。セッターから取得したデータとデータベースから取得したデータをマップします。 – mohnage7

+0

私はユーザークラスの例 – mohnage7

0

あなたはuidは変数あなたが

を使用する必要が 単なる文字列ではありません

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

ヌル CAUEを取得

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では、DBのUserのすべてのキーフィールドに対してgetterとsetterが必要です。 – Steve

+0

右...自分のモデルを作成 – Elsunhoty

+0

ありがとうございました!私が十分な評判のポイントを持っていれば、私はあなたの答えを上向きにします。私がそれらを得るとき私は! – Steve

関連する問題