Je suis nouveau au développement Android et à Firebase, donc cela peut être une question simple.
Je souhaite développer une application correspondant au nom du petit-enfant dans la Firebase, puis obtenez les données de la clé qui l'entoure mais Le problème est que lorsque je récupère les données, il obtient la valeur de tous les nœud enfants de la base de données. p>
< / p>
Voici le code que j'ai fait p> le résultat {message = "...", priorité = "..", nom = "...", heure = "..."} p>
blockQuote> mais le résultat {message = "..", nom = ".."} p>
blockQuote> existe-t-il un moyen de spécifier l'itinéraire des données extraites? p> p>
3 Réponses :
Pourquoi ne faites-vous pas d'abord analyser le JSON dans un objet, puis utilisez uniquement les paramètres requis dont vous avez besoin. Pour analyser, vous pouvez utiliser la bibliothèque SimpleJson. P>
Pour pouvoir récupérer le nom code> et le message dans le code ci-dessus, vous sera en mesure de récupérer le nom code> et du message code> code>, puis vérifiez si le nom code> code> est égal à la valeur écrite dans la barre de recherche . Après cela, vous pouvez attribuer le message code> Vous pouvez procéder comme suit:
code> à un
textview code> p> p>
Donc, je n'ai pas à faire la boucle pour obtenir les données que je veux bien?
Vous faites pour boucle s'il existe un nœud entre votre nœud actuel et les données que vous souhaitez obtenir, exemple si vous avez "Data / ID / nom: AA". Ici, dans ce cas, vous faites une boucle, mais dans votre base de données, vos enfants sont immédiatement sous "Data"
Vous pouvez interroger à travers votre grand enfant.
Supposons que vous souhaitiez rechercher par nom strong> de votre base de données. Pour ce faire, suivez le code ci-dessous DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Data");
Query query = databaseReference.orderByChild("name")
.startAt(mSearchText)
.endAt(mSearchText+"\uf8ff");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data:dataSnapshot.getChildren()){
String name = data.child("name").getValue().toString();
String priority = data.child("Priority").getValue().toString();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
C'était comme si je devais taper le nom sur l'Edittext et il se comparera au petit-enfant (dans ce cas est "AA") si elle est égale à l'autre, je souhaite que mon application affiche uniquement le message et le nom sur TextView