質問:
populateViewHolder で addSnapshotListener を使用して削除するにはどうすればよいですかFirebaseFirestore クエリを使用した RecyclerView アイテムのメソッド?
FirebaseUI-Android ライブラリの考慮事項:
FirebaseUI-Android ライブラリの FirebaseRecyclerAdapter は、RecyclerView のデータ変更通知を処理します。ただし、ビュー ホルダーを設定するための addSnapshotListener の使用はサポートされていません。
EventListener とグローバル変数を使用します:
populateViewHolder で addSnapshotListener を使用するには、次の手順に従います:
グローバル EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
リスナーを初期化し、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>
onStop() でリスナーを削除します:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
onStart():
<code class="java">@Override protected void onStart() { super.onStart(); if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); } }</code>
代替オプション:
以上がFirebaseFirestore クエリで RecyclerView アイテムの `populateViewHolder` メソッドで `addSnapshotListener` と `remove` を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。