Accès aux références de documents dans l'adaptateur RecyclerView avec addSnapshotListener
FirebaseUI-Android fournit FirebaseRecyclerAdapter pour afficher efficacement les données en temps réel dans RecyclerView. Cependant, lorsque vous traitez des références de documents dans des objets de données, vous devrez peut-être utiliser addSnapshotListener pour récupérer des données.
Pour remplir votre RecyclerView ViewHolder avec une référence de document :
Créez un 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>
Ajoutez l'écouteur à la référence du document dans populateViewHolder :
<code class="java">if (listenerRegistration == null) { listenerRegistration = docRef.addSnapshotListener(eventListener); }</code>
Suppression de l'écouteur
Pour éviter les fuites de mémoire et une utilisation excessive du réseau, supprimez l'écouteur lorsqu'il n'est plus nécessaire :
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
Gestion du cycle de vie
N'oubliez pas d'ajouter l'écouteur dans onStart() et de le supprimer dans onStop() pour garantir une bonne gestion du cycle de vie.
Alternatives
Si les mises à jour des données en temps réel ne sont pas nécessaires, envisagez d'utiliser un appel get() sur la référence pour lire le document une fois.
Suppression automatique de l'écouteur
Pour une solution plus élégante, transmettez l'activité comme premier argument dans addSnapshotListener() :
<code class="java">ListenerRegistration lg = yourDocumentRef .addSnapshotListener(YourActivity.this, eventListener);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!