habe ich umgesetzt RecyclerView
mit FirebaseUI-Android-Bibliothek.
Mein RecyclerView
Echtzeitdaten ändern sich gut, sobald ich das benutze FirebaseRecyclerAdapter
In Collection hat dieses Datendokument den Feldtyp als Boolesch, Ganzzahl, Referenz.
ich diese Referenz verwenden möchten, um Daten einzulesen populateViewHolder
mit addSnapshotListener
.
Hilf mir! Hier ist mein Code:
FirebaseRecyclerAdapter<Conv, ConvViewHolder> firebaseConvAdapter = new FirebaseRecyclerAdapter<Conv, ConvViewHolder>(
Conv.class,
R.layout.users_single_layout,
ConvViewHolder.class,
conversationQuery
) {
@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);
docRef.addSnapshotListener(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");
}
}
});
}
};
mConvList.setAdapter(firebaseConvAdapter);
Firebase sagt, wenn Sie addSnapshotListener hinzufügen, müssen Sie es entfernen, sobald dies nicht erforderlich ist Trennen Sie einen Zuhörer
Wenn Sie nicht mehr daran interessiert sind, Ihre Daten abzuhören, müssen Sie Ihren Listener trennen, damit Ihre Ereignisrückrufe nicht mehr aufgerufen werden. Dadurch kann der Client die Verwendung von Bandbreite zum Empfangen von Updates beenden. Sie können die Abmeldefunktion auf verwenden
onSnapshot()
um das Abhören von Updates zu beenden.