Je récupère chaque profil sous forme d'objets et je les mets dans une liste de tableaux. Le premier println montre la taille 1 puis le second montre la taille 0. Comment est-ce possible? ... Ma classe Profile a des getters pour chaque attribut et un constructeur de profil vide.

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

Image de mes données dans Firebase:

Firebase

0
Steve 4 avril 2017 à 18:26

2 réponses

Meilleure réponse

Vous pouvez obtenir toutes les données de l'utilisateur puis obtenir "pic" à partir de celui-ci ou vous ne pouvez obtenir que la référence "pic".

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

    }
});

Votre classe UserModel pourrait être comme ça

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
Mohamed Nageh 5 avril 2017 à 10:48

Vous obtenez une valeur null de

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

Où Uid est juste une chaîne et non une variable que vous devez utiliser

    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
Elsunhoty 4 avril 2017 à 15:48