ホームページ  >  記事  >  Java  >  FirebaseFirestore クエリで RecyclerView アイテムの `populateViewHolder` メソッドで `addSnapshotListener` と `remove` を使用する方法

FirebaseFirestore クエリで RecyclerView アイテムの `populateViewHolder` メソッドで `addSnapshotListener` と `remove` を使用する方法

DDD
DDDオリジナル
2024-10-26 09:05:30921ブラウズ

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

RecyclerView 項目の PopulateViewHolder で addSnapshotListener を使用して削除する

質問:

populateViewHolder で addSnapshotListener を使用して削除するにはどうすればよいですかFirebaseFirestore クエリを使用した RecyclerView アイテムのメソッド?

FirebaseUI-Android ライブラリの考慮事項:

FirebaseUI-Android ライブラリの FirebaseRecyclerAdapter は、RecyclerView のデータ変更通知を処理します。ただし、ビュー ホルダーを設定するための addSnapshotListener の使用はサポートされていません。

EventListener とグローバル変数を使用します:

populateViewHolder で addSnapshotListener を使用するには、次の手順に従います:

  1. グローバル EventListener を宣言します。変数:

    <code class="java">EventListener<DocumentSnapshot> eventListener;</code>
  2. リスナーを初期化し、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>
  3. onStop() でリスナーを削除します:

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

    <code class="java">@Override
    protected void onStart() {
     super.onStart();
     if (listenerRegistration == null) {
         listenerRegistration = yourRef.addSnapshotListener(eventListener);
     }
    }</code>

代替オプション:

  • リアルタイムのデータ更新が必要ない場合は、get() の使用を検討してください。これにより、ドキュメントが一度読み取られ、リスナーは必要ありません。
  • アクティビティを addSnapshotListener の最初の引数として渡すことで、リスナーを手動で削除することもできます。 Firestore は、アクティビティが停止されたときにリスナーを自動的にクリーンアップします。

以上がFirebaseFirestore クエリで RecyclerView アイテムの `populateViewHolder` メソッドで `addSnapshotListener` と `remove` を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。