Maison  >  Article  >  Java  >  Comment utiliser `addSnapshotListener` et `remove` dans la méthode `populateViewHolder` d'un élément RecyclerView avec une requête FirebaseFirestore ?

Comment utiliser `addSnapshotListener` et `remove` dans la méthode `populateViewHolder` d'un élément RecyclerView avec une requête FirebaseFirestore ?

DDD
DDDoriginal
2024-10-26 09:05:30921parcourir

How to Use `addSnapshotListener` and `remove` in a RecyclerView Item's `populateViewHolder` Method with a FirebaseFirestore Query?

Utilisation de addSnapshotListener et suppression dans le PopulateViewHolder de l'élément RecyclerView

Question :

Comment puis-je utiliser addSnapshotListener et supprimer dans populateViewHolder méthode d'un élément RecyclerView avec une requête FirebaseFirestore ?

Considération de la bibliothèque FirebaseUI-Android :

Le FirebaseRecyclerAdapter de la bibliothèque FirebaseUI-Android gère les notifications de modification de données pour RecyclerView. Cependant, cela ne prend pas en charge l'utilisation de addSnapshotListener pour remplir les détenteurs de vues.

Utilisez EventListener et la variable globale :

Pour utiliser addSnapshotListener dans populateViewHolder, suivez ces étapes :

  1. Déclarer un EventListener variable :

    <code class="java">EventListener<DocumentSnapshot> eventListener;</code>
  2. Initialisez l'écouteur et ajoutez-le dans populateViewHolder :

    <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>
  3. Supprimez l'écouteur dans onStop() :

    <code class="java">@Override
    protected void onStop() {
     if (listenerRegistration != null) {
         listenerRegistration.remove();
     }
    }</code>
  4. Ajouter à nouveau l'auditeur dans onStart() :

    <code class="java">@Override
    protected void onStart() {
     super.onStart();
     if (listenerRegistration == null) {
         listenerRegistration = yourRef.addSnapshotListener(eventListener);
     }
    }</code>

Options alternatives :

  • Si les mises à jour des données en temps réel ne sont pas nécessaires, envisagez d'utiliser get(). Cela lit le document une fois et ne nécessite pas d'écouteurs.
  • Vous pouvez également supprimer manuellement l'écouteur en passant l'activité comme premier argument à addSnapshotListener. Firestore nettoiera alors automatiquement l'auditeur lorsque l'activité sera arrêtée.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn