So fügen Sie Ereignis-Listener in RecyclerView Item ViewHolder mit der FirebaseUI-Android-Bibliothek hinzu und entfernen sie.
Die FirebaseUI-Android-Bibliothek vereinfacht die Aufgabe der Anzeige von Firebase Daten in RecyclerView. Wenn Sie jedoch mit Dokumenten arbeiten, die Referenzfelder enthalten, müssen Sie die referenzierten Daten mithilfe von addSnapshotListener abrufen.
In diesem Artikel zeigen wir Ihnen, wie Sie addSnapshotListener verwenden und entfernen, wenn es nicht benötigt wird populateViewHolder-Methode eines RecyclerView-Adapters.
populateViewHolder-Methode
Mit der populateViewHolder-Methode binden Sie die Daten aus dem Firebase-Snapshot an Ihren ViewHolder. Um die referenzierten Daten abzurufen, verwenden Sie den folgenden Ansatz:
<code class="java">@Override protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) { final String list_user_id = getRef(i).getKey(); final DocumentReference docRef = db.collection("cities").document(list_user_id); // Add a listener to the document reference EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() { @Override public void onEvent(@Nullable DocumentSnapshot snapshot, @Nullable FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { Log.d(TAG, "Current data: " + snapshot.getData()); } else { Log.d(TAG, "Current data: null"); } } }; docRef.addSnapshotListener(eventListener); }</code>
Ereignis-Listener trennen
Es ist wichtig, den Listener zu trennen, wenn die Daten nicht mehr benötigt werden Vermeiden Sie unnötigen Bandbreitenverbrauch. Deklarieren Sie dazu eine globale ListenerRegistration-Variable und fügen Sie den Listener nur bei Bedarf hinzu, wie folgt:
<code class="java">// Inside your RecyclerView adapter private ListenerRegistration listenerRegistration; if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); }</code>
Und entfernen Sie den Listener in der onStop()-Methode:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
Zusätzliche Überlegungen
Das obige ist der detaillierte Inhalt vonWie verwalte ich Ereignis-Listener in RecyclerView Item ViewHolders mit FirebaseUI-Android?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!