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