Voici à quoi ressemble mon test:
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?
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) {
}
});
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());
}
}
}
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.