如何使用 FirebaseUI-Android 库在 RecyclerView Item 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 Item ViewHolders 中的事件侦听器?的详细内容。更多信息请关注PHP中文网其他相关文章!