web-dev-qa-db-fra.com

Firebase pour Android, comment puis-je parcourir un enfant (pour chaque enfant = x do y)

Voici à quoi ressemble mon test:

enter image description here

Je n'utiliserai pas les champs ci-dessus, c'est juste un mannequin. Mais je voudrais passer en revue tous les enfants sur les "utilisateurs" et pour chaque email retourner un:

System.out.println(emailString);

La seule façon que j'ai trouvée de lister un objet est d'utiliser firebaseAdapter, y a-t-il une autre façon de le faire?

16
Rosenberg

La manière la plus simple est d'utiliser un ValueEventListener.

    FirebaseDatabase.getInstance().getReference().child("users")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        User user = snapshot.getValue(User.class);
                        System.out.println(user.email);
                    }
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
35
rubenlop88
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
myRef.addValueEventListener(new ValueEventListener() {
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot item_snapshot:dataSnapshot.getChildren()) {

      Log.d("item id ",item_snapshot.child("item_id").getValue().toString());
      Log.d("item desc",item_snapshot.child("item_desc").getValue().toString());
     }
  }
}
5
Amol Dhanwat

Disons que vous avez une référence au nœud tilisateurs, vous pouvez parcourir les nœuds comme suit:

reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot child : dataSnapshot.getChildren() ){
                // Do magic here
            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {}
    });

Notez que le DataSnapshot child à l'intérieur de la boucle for aura les UID comme clé, pas tilisateurs.

3
Sunshinator