问题:
如何在populateViewHolder中使用addSnapshotListener和remove具有 FirebaseFirestore 查询的 RecyclerView 项目的方法?
FirebaseUI-Android 库注意事项:
FirebaseUI-Android 库中的 FirebaseRecyclerAdapter 处理 RecyclerView 的数据更改通知。但是,这不支持使用 addSnapshotListener 来填充视图持有者。
使用 EventListener 和全局变量:
要在 populateViewHolder 中使用 addSnapshotListener,请按照以下步骤操作:
声明一个全局EventListener
<code class="java">EventListener<DocumentSnapshot> eventListener;</code>
初始化监听器并添加到populateViewHolder:
<code class="java">eventListener = new EventListener<DocumentSnapshot>() { @Override public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { // Do what you need to do } } }; if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); }</code>
在onStop()中移除监听器:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
在 onStart() 中再次添加监听器:
<code class="java">@Override protected void onStart() { super.onStart(); if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); } }</code>
替代选项:
以上是如何通过 FirebaseFirestore 查询在 RecyclerView 项的'populateViewHolder”方法中使用'addSnapshotListener”和'remove”?的详细内容。更多信息请关注PHP中文网其他相关文章!