Heim > Java > javaLernprogramm > Hauptteil

Wie verwende ich „addSnapshotListener' und „remove' in der „populateViewHolder'-Methode eines RecyclerView-Elements mit einer FirebaseFirestore-Abfrage?

DDD
Freigeben: 2024-10-26 09:05:30
Original
1001 Leute haben es durchsucht

How to Use `addSnapshotListener` and `remove` in a RecyclerView Item's `populateViewHolder` Method with a FirebaseFirestore Query?

addSnapshotListener verwenden und im PopulateViewHolder des RecyclerView-Elements entfernen

Frage:

Wie kann ich addSnapshotListener verwenden und im populateViewHolder entfernen? Methode eines RecyclerView-Elements mit einer FirebaseFirestore-Abfrage?

Überlegung zur FirebaseUI-Android-Bibliothek:

Der FirebaseRecyclerAdapter aus der FirebaseUI-Android-Bibliothek verarbeitet Datenänderungsbenachrichtigungen für RecyclerView. Dies unterstützt jedoch nicht die Verwendung von addSnapshotListener zum Auffüllen von Ansichtshaltern.

Verwenden Sie EventListener und globale Variable:

Um addSnapshotListener in populateViewHolder zu verwenden, befolgen Sie diese Schritte:

  1. Deklarieren Sie einen globalen EventListener Variable:

    <code class="java">EventListener<DocumentSnapshot> eventListener;</code>
    Nach dem Login kopieren
  2. Initialisieren Sie den Listener und fügen Sie ihn in populateViewHolder hinzu:

    <code class="java">eventListener = new EventListener<DocumentSnapshot>() {
     @Override
     public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) {
         if (e != null) {
             Log.w(TAG, "Listen failed.", e);
             return;
         }
    
         if (snapshot != null && snapshot.exists()) {
             // Do what you need to do
         }
     }
    };
    if (listenerRegistration == null) {
     listenerRegistration = yourRef.addSnapshotListener(eventListener);
    }</code>
    Nach dem Login kopieren
  3. Entfernen Sie den Listener in onStop():

    <code class="java">@Override
    protected void onStop() {
     if (listenerRegistration != null) {
         listenerRegistration.remove();
     }
    }</code>
    Nach dem Login kopieren
  4. Fügen Sie den Listener erneut in onStart() hinzu:

    <code class="java">@Override
    protected void onStart() {
     super.onStart();
     if (listenerRegistration == null) {
         listenerRegistration = yourRef.addSnapshotListener(eventListener);
     }
    }</code>
    Nach dem Login kopieren

Alternative Optionen:

  • Wenn Echtzeit-Datenaktualisierungen nicht erforderlich sind, sollten Sie die Verwendung von get() in Betracht ziehen. Dadurch wird das Dokument einmal gelesen und es sind keine Listener erforderlich.
  • Sie können den Listener auch manuell entfernen, indem Sie die Aktivität als erstes Argument an addSnapshotListener übergeben. Firestore bereinigt dann automatisch den Listener, wenn die Aktivität beendet wird.

Das obige ist der detaillierte Inhalt vonWie verwende ich „addSnapshotListener' und „remove' in der „populateViewHolder'-Methode eines RecyclerView-Elements mit einer FirebaseFirestore-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage