ホームページ >Java >&#&チュートリアル >FirebaseUI と addSnapshotListener を使用して RecyclerView アダプターのドキュメント参照にアクセスして更新する方法

FirebaseUI と addSnapshotListener を使用して RecyclerView アダプターのドキュメント参照にアクセスして更新する方法

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

How to Access and Update Document References in a RecyclerView Adapter with FirebaseUI and addSnapshotListener?

addSnapshotListener を使用した RecyclerView アダプターのドキュメント参照へのアクセス

FirebaseUI-Android は、RecyclerView でリアルタイム データを効率的に表示するための FirebaseRecyclerAdapter を提供します。ただし、データ オブジェクト内のドキュメント参照を処理する場合、データを取得するために addSnapshotListener を使用する必要が生じる場合があります。

RecyclerView ViewHolder にドキュメント参照を設定するには:

  1. EventListener を作成します:

    <code class="java">EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() {
     @Override
     public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) {
         if (snapshot != null && snapshot.exists()) {
             // Retrieve and display the data from the document
         }
     }
    };</code>
  2. グローバル ListenerRegistration 変数をクラスに追加します。
  3. populateViewHolder 内のドキュメント参照にリスナーを追加します:

    <code class="java">if (listenerRegistration == null) {
     listenerRegistration = docRef.addSnapshotListener(eventListener);
    }</code>

リスナーの削除

メモリ リークや過度のネットワーク使用を避けるため、リスナーが不要になったら削除します。

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

ライフサイクル管理

適切なライフサイクル管理を確保するために、onStart() でリスナーを追加し、onStop() で削除することを忘れないでください。

代替手段

リアルタイムのデータ更新が必要ない場合は、参照で get() 呼び出しを使用してドキュメントを 1 回読み取ることを検討してください。

自動リスナー削除

より洗練されたソリューションの場合は、addSnapshotListener():

<code class="java">ListenerRegistration lg = yourDocumentRef
            .addSnapshotListener(YourActivity.this, eventListener);</code>
の最初の引数としてアクティビティを渡します。

以上がFirebaseUI と addSnapshotListener を使用して RecyclerView アダプターのドキュメント参照にアクセスして更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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