Dies ist mein Code für das Lesen von Daten lesen Firebase:Kann nicht Firebase Datenbank
final String[] booknum = {"0"};
databaseReference.child("All BID").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
booknum[0] =Long.toString(snapshot.getChildrenCount());
Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();
}
@Override public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
});
Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();
Wenn ich dies ausgeführt wird, der erste Toast (innen ValueEventListener) druckt die richtige Antwort (zB ‚8‘). Aber der Toast draußen druckt immer 0 egal was passiert.
Bitte Hilfe!
Sorry, ich habe es versucht, aber ich kann es nicht beheben. Kennen Sie einen Weg, onDataChange() zu vermeiden? Ich brauche nur die Anzahl der Elemente, die sich in "All BIID" befinden. – theBrainyGeek
Die Verwendung von onDataChange() ist der richtige Weg. Und Sie erhalten die Anzahl der Elemente in "All BID" in onDataChange(). Es druckt 8. –
Ich verstehe das, aber das Problem ist, dass ich die Anzahl der Elemente bekomme, so dass ich einen eindeutigen Code generieren kann, bevor ich neue Daten einlege. Und die onDataChange() wird nicht ausgeführt, bis ich neue Daten schreibe. Deshalb wird in diesem Code zuerst die '0' von außen Toast gedruckt, dann werden die Daten hinzugefügt (mit eindeutigem Code 0) und dann druckt onDataChange() 8. Sorry, ich bin neu in der Datenbankverwaltung, deine Hilfe ist hoch geschätzt! – theBrainyGeek