Comment obtenir la valeur ZNAME? Au départ, je dois comparer la clé (Ex :: Here ZONE_1), puis ZNAME doit être récupéré. Merci d'avance...
Pour accéder à une valeur dans votre base de données, vous créez un DatabaseReference
pour cet emplacement. Voici trois références à des emplacements dans votre base de données:
DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("ZONES");
DatabaseReference zone1Ref = zonesRef.child("ZONE_1");
DatabaseReference zone1NameRef = zone1Ref.child("ZNAME");
Dans cet extrait:
zonesRef
pointe vers /ZONES
zone1Ref
Pointe vers /ZONES/ZONE_1
zone1NameRef
Pointe vers /ZONES/ZONE_1/ZNAME
Voir la documentation Firebase sur l'obtention d'une référence de base de données pour plus d'informations.
Vous pouvez attacher un écouteur à chacune des références, pour obtenir la valeur à cet emplacement. Par exemple, pour obtenir la valeur de /ZONES/ZONE_1/ZNAME
:
zone1NameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, dataSnapshot.getValue(String.class));
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});
Pour plus d'informations sur ce type d'opération de lecture, consultez la documentation Firebase sur la lecture des valeurs .
Si vous écoutez à la place sur /ZONES/ZONE_1
, Vous obtiendrez un DataSnapshot
du nœud entier avec toutes ses propriétés. Vous utilisez ensuite DataSnapshot.child()
pour obtenir le ZNAME
:
zone1Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, dataSnapshot.child("ZNAME").getValue(String.class));
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});
Un niveau de plus, vous pouvez écouter sur /ZONES
, Qui vous donnera un instantané avec toutes les zones. Comme cela gère plusieurs enfants, vous devrez les parcourir avec DataSnapshot.getChildren()
:
zonesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});
Voir à ce sujet la documentation Firebase sur l'écoute des listes de données .
Enfin, vous voudrez peut-être interroger pour trouver une zone spécifique, par exemple pour trouver la zone avec "ZCODE": "ECOR"
:
Query zonesQuery = zonesRef.orderByChild("ZCODE").equalTo("ECOR");
zonesQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});
Pour en savoir plus, lisez la documentation Firebase sur le tri et le filtrage des données .