Maison >Java >javaDidacticiel >Comment utiliser `addSnapshotListener` et `remove` dans la méthode `populateViewHolder` d'un élément RecyclerView avec une requête FirebaseFirestore ?
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 :
Déclarer un EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
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>
Supprimez l'écouteur dans onStop() :
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
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 :
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!