Heim  >  Artikel  >  Java  >  Wie kann ich mit FirebaseUI und addSnapshotListener auf Dokumentverweise in einem RecyclerView-Adapter zugreifen und diese aktualisieren?

Wie kann ich mit FirebaseUI und addSnapshotListener auf Dokumentverweise in einem RecyclerView-Adapter zugreifen und diese aktualisieren?

DDD
DDDOriginal
2024-10-26 09:31:30784Durchsuche

How to Access and Update Document References in a RecyclerView Adapter with FirebaseUI and addSnapshotListener?

Zugriff auf Dokumentverweise im RecyclerView-Adapter mit addSnapshotListener

FirebaseUI-Android bietet FirebaseRecyclerAdapter zur effizienten Anzeige von Echtzeitdaten in RecyclerView. Beim Umgang mit Dokumentverweisen innerhalb von Datenobjekten kann es jedoch erforderlich sein, addSnapshotListener zum Abrufen von Daten zu verwenden.

So füllen Sie Ihren RecyclerView ViewHolder mit einem Dokumentverweis:

  1. Erstellen Sie einen EventListener:

    <code class="java">EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() {
     @Override
     public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) {
         if (snapshot != null && snapshot.exists()) {
             // Retrieve and display the data from the document
         }
     }
    };</code>
  2. Fügen Sie Ihrer Klasse eine globale ListenerRegistration-Variable hinzu.
  3. Fügen Sie den Listener zur Dokumentreferenz in populateViewHolder hinzu:

    <code class="java">if (listenerRegistration == null) {
     listenerRegistration = docRef.addSnapshotListener(eventListener);
    }</code>

Entfernen des Listeners

Um Speicherverluste und übermäßige Netzwerknutzung zu vermeiden, entfernen Sie den Listener, wenn er nicht mehr benötigt wird:

<code class="java">@Override
protected void onStop() {
    if (listenerRegistration != null) {
        listenerRegistration.remove();
    }
}</code>

Lebenszyklusmanagement

Denken Sie daran, den Listener in onStart() hinzuzufügen und in onStop() zu entfernen, um ein ordnungsgemäßes Lebenszyklusmanagement sicherzustellen.

Alternativen

Wenn keine Datenaktualisierungen in Echtzeit erforderlich sind, sollten Sie erwägen, einen get()-Aufruf für die Referenz zu verwenden, um das Dokument einmal zu lesen.

Automatische Listener-Entfernung

Für eine elegantere Lösung übergeben Sie die Aktivität als erstes Argument in addSnapshotListener():

<code class="java">ListenerRegistration lg = yourDocumentRef
            .addSnapshotListener(YourActivity.this, eventListener);</code>

Das obige ist der detaillierte Inhalt vonWie kann ich mit FirebaseUI und addSnapshotListener auf Dokumentverweise in einem RecyclerView-Adapter zugreifen und diese aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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