如何使用FirebaseUI-Android 函式庫在RecyclerView Item ViewHolder 中新增和移除事件監聽器
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 Item ViewHolders 中的事件偵聽器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!