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:
Deklarieren Sie einen globalen EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
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>
Entfernen Sie den Listener in onStop():
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
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>
Alternative Optionen:
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!