Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menggunakan `addSnapshotListener` dan `remove` dalam Kaedah `populateViewHolder` Item RecyclerView dengan Pertanyaan FirebaseFirestore?

Bagaimana untuk Menggunakan `addSnapshotListener` dan `remove` dalam Kaedah `populateViewHolder` Item RecyclerView dengan Pertanyaan FirebaseFirestore?

DDD
DDDasal
2024-10-26 09:05:30921semak imbas

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

Menggunakan addSnapshotListener dan keluarkan dalam RecyclerView Item's PopulateViewHolder

Soalan:

Bagaimana saya boleh menggunakan addSnapshotListener dan buang dalam populateView kaedah item RecyclerView dengan pertanyaan FirebaseFirestore?

Pertimbangan Pustaka FirebaseUI-Android:

FirebaseRecyclerAdapter daripada perpustakaan FirebaseUI-Android mengendalikan pemberitahuan perubahan data untuk RecyclerView. Walau bagaimanapun, ini tidak menyokong penggunaan addSnapshotListener untuk mengisi pemegang paparan.

Gunakan EventListener dan Pembolehubah Global:

Untuk menggunakan addSnapshotListener dalam populateViewHolder, ikut langkah berikut:

  1. Isytiharkan EventListener pembolehubah:

    <code class="java">EventListener<DocumentSnapshot> eventListener;</code>
  2. Alih keluar pendengar dalam onStop():

    <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. Tambahkan pendengar sekali lagi dalam onStart():

    <code class="java">@Override
    protected void onStop() {
     if (listenerRegistration != null) {
         listenerRegistration.remove();
     }
    }</code>
  4. Pilihan Alternatif:
    <code class="java">@Override
    protected void onStart() {
     super.onStart();
     if (listenerRegistration == null) {
         listenerRegistration = yourRef.addSnapshotListener(eventListener);
     }
    }</code>

Jika kemas kini data masa nyata tidak diperlukan, pertimbangkan untuk menggunakan get(). Ini membaca dokumen sekali dan tidak memerlukan pendengar.Anda juga boleh mengalih keluar pendengar secara manual dengan menghantar aktiviti sebagai hujah pertama kepada addSnapshotListener. Firestore kemudiannya akan membersihkan pendengar secara automatik apabila aktiviti dihentikan.

    Atas ialah kandungan terperinci Bagaimana untuk Menggunakan `addSnapshotListener` dan `remove` dalam Kaedah `populateViewHolder` Item RecyclerView dengan Pertanyaan FirebaseFirestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn