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