Maison > Java > javaDidacticiel > Comment gérer les écouteurs d'événements dans les ViewHolders d'éléments RecyclerView avec FirebaseUI-Android ?

Comment gérer les écouteurs d'événements dans les ViewHolders d'éléments RecyclerView avec FirebaseUI-Android ?

Mary-Kate Olsen
Libérer: 2024-10-26 15:25:03
original
555 Les gens l'ont consulté

How to Manage Event Listeners in RecyclerView Item ViewHolders with FirebaseUI-Android?

Comment ajouter et supprimer des écouteurs d'événements dans RecyclerView Item ViewHolder avec la bibliothèque FirebaseUI-Android

La bibliothèque FirebaseUI-Android simplifie la tâche d'affichage de Firebase données dans RecyclerView. Cependant, lorsque vous travaillez avec des documents contenant des champs de référence, il est nécessaire de récupérer les données référencées à l'aide de addSnapshotListener.

Dans cet article, nous vous expliquerons comment utiliser addSnapshotListener et le supprimer lorsqu'il n'est pas nécessaire dans le méthode populateViewHolder d'un adaptateur RecyclerView.

Méthode populateViewHolder

La méthode populateViewHolder est l'endroit où vous liez les données de l'instantané Firebase à votre ViewHolder. Pour récupérer les données référencées, utilisez l'approche suivante :

<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>
Copier après la connexion

Détacher l'écouteur d'événement

Il est important de détacher l'écouteur lorsque les données ne sont plus nécessaires pour éviter une consommation inutile de bande passante. Pour ce faire, déclarez une variable globale ListenerRegistration et ajoutez l'écouteur uniquement lorsque cela est nécessaire, comme ceci :

<code class="java">// Inside your RecyclerView adapter
private ListenerRegistration listenerRegistration;

if (listenerRegistration == null) {
    listenerRegistration = yourRef.addSnapshotListener(eventListener);
}</code>
Copier après la connexion

Et supprimez l'écouteur dans la méthode onStop() :

<code class="java">@Override
protected void onStop() {
    if (listenerRegistration != null) {
        listenerRegistration.remove();
    }
}</code>
Copier après la connexion

Considérations supplémentaires

  • Si vous n'avez besoin de lire le document qu'une seule fois, envisagez d'utiliser la méthode get() au lieu de addSnapshotListener.
  • Vous pouvez également transmettre l'activité comme le premier argument de addSnapshotListener pour que Firestore nettoie automatiquement les écouteurs lorsque l'activité est 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal