首页  >  文章  >  Java  >  如何使用 FirebaseUI 和 addSnapshotListener 访问和更新 RecyclerView 适配器中的文档引用?

如何使用 FirebaseUI 和 addSnapshotListener 访问和更新 RecyclerView 适配器中的文档引用?

DDD
DDD原创
2024-10-26 09:31:30784浏览

How to Access and Update Document References in a RecyclerView Adapter with FirebaseUI and addSnapshotListener?

使用 addSnapshotListener 访问 RecyclerView Adapter 中的文档引用

FirebaseUI-Android 提供了 FirebaseRecyclerAdapter 来高效地在 RecyclerView 中显示实时数据。但是,在处理数据对象内的文档引用时,您可能需要使用 addSnapshotListener 来检索数据。

要使用文档引用填充 RecyclerView ViewHolder:

  1. 创建一个 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>
  2. 将全局 ListenerRegistration 变量添加到您的类中。
  3. 将侦听器添加到 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn