FirebaseUI-Android を使用して RecyclerView 項目 ViewHolders でイベント リスナーを管理する方法

Mary-Kate Olsen
リリース: 2024-10-26 15:25:03
オリジナル
517 人が閲覧しました

How to Manage Event Listeners in RecyclerView Item ViewHolders with FirebaseUI-Android?

FirebaseUI-Android ライブラリを使用して RecyclerView 項目 ViewHolder にイベント リスナーを追加および削除する方法

FirebaseUI-Android ライブラリにより、Firebase を表示するタスクが簡素化されますRecyclerView のデータ。ただし、参照フィールドを含むドキュメントを操作する場合は、addSnapshotListener を使用して参照データを取得する必要があります。

この記事では、addSnapshotListener の使用方法と、必要でない場合に削除する方法について説明します。 RecyclerView アダプターの PopulateViewHolder メソッド。

populateViewHolder メソッド

populateViewHolder メソッドは、Firebase スナップショットのデータを ViewHolder にバインドする場所です。参照されたデータを取得するには、次の方法を使用します。

<code class="java">@Override
protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) {

    final String list_user_id = getRef(i).getKey();

    final DocumentReference docRef = db.collection("cities").document(list_user_id);
    // Add a listener to the document reference
    EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() {
        @Override
        public void onEvent(@Nullable DocumentSnapshot snapshot,
                            @Nullable FirebaseFirestoreException e) {
            if (e != null) {
                Log.w(TAG, "Listen failed.", e);
                return;
            }

            if (snapshot != null && snapshot.exists()) {
                Log.d(TAG, "Current data: " + snapshot.getData());
            } else {
                Log.d(TAG, "Current data: null");
            }
        }
    };
    docRef.addSnapshotListener(eventListener);
}</code>
ログイン後にコピー

イベント リスナーの切り離し

データが必要なくなったら、リスナーを切り離すことが重要です。不必要な帯域幅の消費を回避します。これを行うには、次のように、グローバル ListenerRegistration 変数を宣言し、必要な場合にのみリスナーを追加します。

<code class="java">// Inside your RecyclerView adapter
private ListenerRegistration listenerRegistration;

if (listenerRegistration == null) {
    listenerRegistration = yourRef.addSnapshotListener(eventListener);
}</code>
ログイン後にコピー

次に、onStop() メソッドでリスナーを削除します:

<code class="java">@Override
protected void onStop() {
    if (listenerRegistration != null) {
        listenerRegistration.remove();
    }
}</code>
ログイン後にコピー

その他の考慮事項

  • ドキュメントを 1 回だけ読み取る必要がある場合は、addSnapshotListener の代わりに get() メソッドを使用することを検討してください。
  • アクティビティを次のように渡すこともできます。 addSnapshotListener の最初の引数は、アクティビティの停止時に Firestore がリスナーを自動的にクリーンアップするようにします。

以上がFirebaseUI-Android を使用して RecyclerView 項目 ViewHolders でイベント リスナーを管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート