使用 addSnapshotListener 访问 RecyclerView Adapter 中的文档引用
FirebaseUI-Android 提供了 FirebaseRecyclerAdapter 来高效地在 RecyclerView 中显示实时数据。但是,在处理数据对象内的文档引用时,您可能需要使用 addSnapshotListener 来检索数据。
要使用文档引用填充 RecyclerView ViewHolder:
创建一个 EventListener:
<code class="java">EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() { @Override public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) { if (snapshot != null && snapshot.exists()) { // Retrieve and display the data from the document } } };</code>
将侦听器添加到 populateViewHolder 中的文档引用:
<code class="java">if (listenerRegistration == null) { listenerRegistration = docRef.addSnapshotListener(eventListener); }</code>
删除侦听器
为避免内存泄漏和过多的网络使用,请在不再需要时删除侦听器:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
生命周期管理
请记住在 onStart() 中添加侦听器并在 onStop() 中删除它,以确保正确的生命周期管理。
替代方案
如果不需要实时数据更新,请考虑对引用使用 get() 调用来读取一次文档。
自动监听器移除
要获得更优雅的解决方案,请将活动作为 addSnapshotListener() 中的第一个参数传递:
<code class="java">ListenerRegistration lg = yourDocumentRef .addSnapshotListener(YourActivity.this, eventListener);</code>
以上是如何使用 FirebaseUI 和 addSnapshotListener 访问和更新 RecyclerView 适配器中的文档引用?的详细内容。更多信息请关注PHP中文网其他相关文章!