Ich brauche eine klare Erklärung mit addChildEventListener
und Query Ereignisbindung.Firebase Android addChildEventListener Erklärung
Ich benutze Feuerbasis in meinem Android-App. Im onCreate()
Methode meiner Tätigkeit, schaffe ich so etwas wie dieses ...
fiDbQuery = fiDbRef.child("users").orderByChild("name");
fiDbQuery.addChildEventListener(// listener //);
... wo fiDbQuery
ist eine Query
Instanz in der Tätigkeit (global var) und fiDbRef
ist eine DatabaseReference
Instanz in der Tätigkeit zu, wo ich schon den Anfangswert gesetzt habe.
alles in Ordnung ist, wenn die Aktivität zuerst geladen wird, werden alle Benutzer-Daten werden geladen und angezeigt. Aber dann habe ich einen Knopf, um diese Daten nach Benutzer-Feld zu sortieren, entweder per E-Mail, Alter, Name, etc.
und in diesen Tasten onClick
Ereignis Listener, mache ich so etwas ... (dieser ist die Art von Alter Taste)
fiDbQuery = fiDbRef.child("users").orderByChild("age");
... und ich habe die addChildEventListener
Funktion nicht zur Verfügung stellen, weil es bereits „hinzugefügt“ auf onCreate()
Methode, nicht wahr? Die Daten werden nicht geladen, aber wenn ich die addChildEventListener
Funktion hinzufüge, funktioniert es wieder.
Meine Frage ist, wird sie speichern addChildEventListener
in einer Abfrage mehrere zu verwenden, oder gibt es irgendwelche Performance-Probleme mit dem? Alles, was ich will, ist die Wiederverwendung der fiDbQuery
Instanz ohne die Notwendigkeit, addChildEventListener
jedes Mal, wenn ich die fiDbQuery
ändern.
Vielen Dank für Ihre Hilfe.
EDIT:
alle Abfrage ich den exakt gleichen Hörer verwenden machen. Nur ein Listener für alle Abfragen, die eine listView
auffüllen.
Gibt es alles in Ordnung, kann ich Ihnen mit Details helfen? –
Es tut mir leid, ich kann SO heute nur überprüfen, und danke für Ihre Antwort. Aber ist das nicht anders, wenn die Anweisung immer aufgerufen werden muss, wenn eine Taste gedrückt wird? und wenn ja, ist es nicht dasselbe mit dem Aufruf von addChildEventListener, wenn eine Taste gedrückt wird, also mehrfaches hinzufügen? @Alex –
Nein, die Bedingung für das Drücken der Schaltfläche ist in der 'if-else-if' Anweisung selbst. Ich habe diese' if-else-if' Anweisung erstellt, um entweder 'query = nameQuery' oder entweder' query aufzurufen = ageQuery'.Auf diese Weise rufen Sie die 'addChildEventListener()' Methode nur einmal auf. –