Rumah > Java > javaTutorial > teks badan

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

DDD
Lepaskan: 2024-10-26 09:05:30
asal
940 orang telah melayarinya

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>
    Salin selepas log masuk
  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>
    Salin selepas log masuk
  3. Tambahkan pendengar sekali lagi dalam onStart():

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

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!

    sumber:php.cn
    Kenyataan Laman Web ini
    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
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!