Rumah >Java >javaTutorial >Bagaimana untuk Menggunakan `addSnapshotListener` dan `remove` dalam Kaedah `populateViewHolder` Item RecyclerView dengan Pertanyaan FirebaseFirestore?
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:
Isytiharkan EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
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>
Tambahkan pendengar sekali lagi dalam onStart():
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
<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!