Ich habe Probleme mit einem Firebase-Aufruf, den ich vergleichen möchte, wenn der Wert einfach wahr oder falsch ist. Hier ist mein Versuch:Firebase getValue() Boolean nicht korrekt abrufen?
Firebase followingRef = currentUserPath.child("/following");
followingRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(final DataSnapshot dataSnapshot, String s) {
firebaseRef.child("people/" + dataSnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Boolean isFollowing = (Boolean) dataSnapshot.getValue();
if(isFolloiwng) {
User user = snapshot.getValue(User.class);
user.setUserId(dataSnapshot.getKey());
application.getFollowingRecyclerViewAdapter().add(user, application.getFollowingRecyclerViewAdapter());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
...//OnChildChanged,Moved,etc... no code in here
Auf dem Weg ich in currentUserPath.child("following");
verweisen möge es wie folgt aussieht:
EDIT: Bild ersetzt mit aktuellen JSON:
"users" : {
"10206287838487450" : {
"following" : {
"10208425049208936" : true,
"107214969710378" : false,
"1789986447904975" : true
},
"id" : "ae80f030-dea0-4909-944f-0e490847b6ab",
"name" : "Stephen",
"posts" : {
"-KN_oJAgTNJHwJbqY3qk" : true,
"-KN_oN9_Xmw5ULnBRYM7" : true,
"-KN_obYGug9Tdrzufbqc" : true,
"-KNefMk2nX0sOsUx0btx" : true
},
"userId" : "10206287838487450"
},
"people" : {
"10206287838487450" : {
"id" : "9e7ee838-a60a-4588-bc1c-93b98f74356d",
"name" : "Bob",
"userId" : "10206287838487450"
},
"10208425049208936" : {
"id" : "fe6f97e3-0efb-4afb-a322-a1c586f75fb7",
"name" : "Jack",
"userId" : "10208425049208936"
},
"107214969710378" : {
"id" : "ae80f030-dea0-4909-944f-0e490847b6ab",
"name" : "Rick",
"userId" : "107214969710378"
},
"108421236267392" : {
"id" : "c72b35d9-380b-4552-8b05-7426d378fa14",
"name" : "Tommy",
"userId" : "108421236267392"
},
"1112460595485164" : {
"id" : "383692f0-0aba-4d29-afb8-80beefe678c6",
"name" : "Stanley",
"userId" : "1112460595485164"
},
"1789986447904975" : {
"id" : "1ae43255-c040-4b1e-959e-fcdf03e13a45",
"name" : "Link",
"userId" : "1789986447904975"
}
},
Ich bin sehr verwirrt weil ich jedes Mal, wenn ich versuche, dataSnapshot.getValue()
zu einem Boolean zu werfen, bekomme ich immer isFollowing = true
, die eindeutig nicht korrekt ist, weil in meinen Daten, gibt es nur 2 Werte, die wahr sind, wie oben gesehen, nicht alle 3. Die verwirrende Sache ist, wie komme ich kann die 0 nicht abrufenkorrekt. Ich habe versucht, Boolean isFollowing = (Boolean) dataSnapshot.getValue(Boolean.class)
auch zu tun, aber das funktioniert nicht. Die Firebase-Dokumentation besagt, dass beim Abrufen von Daten eine eine Art von Daten sein kann, die wir abrufen können, aber ich kann nicht scheinen, sie korrekt abzurufen. Jede Hilfe wäre willkommen. Vielen Dank!
Sie ein Bild von der JSON Baum in Ihrer Frage aufgenommen haben. Bitte ersetzen Sie dies durch den tatsächlichen JSON als Text, den Sie einfach erhalten, indem Sie in der Firebase-Datenbankkonsole auf die Schaltfläche "Exportieren" klicken. Da der JSON als Text durchsuchbar ist, können wir ihn einfach verwenden, um mit Ihren tatsächlichen Daten zu testen und sie in unserer Antwort zu verwenden, und im Allgemeinen ist dies nur eine gute Sache. –
@FrankvanPuffelen Entschuldigung für den Mangel an Klarheit. Ich habe aufgenommen, wie mein JSON für diesen Datenbankaufruf aussieht. Danke, dass du mir geholfen hast, meinen Beitrag klarer zu machen! Irgendeine Idee, warum das für mich passieren könnte? – user1871869
In dem JSON, den Sie gerade gepostet haben, ist der 'people' Knoten * unter * der' user' Knoten (also '/ users/people'). Ist das tatsächlich die Struktur, die Sie verwenden? –