首頁  >  文章  >  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 來有效地顯示即時資料。但是,在處理資料物件內的文件參考時,您可能需要使用 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. 將全域名稱新增至您的全域變數類中。
  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() 呼叫來讀取一次文件。

自動監聽器移除

<code class="java">ListenerRegistration lg = yourDocumentRef
            .addSnapshotListener(YourActivity.this, eventListener);</code>
要獲得更優雅的解決方案,請將活動作為addSnapshotListener() 中的第一個參數傳遞:

以上是如何使用 FirebaseUI 和 addSnapshotListener 存取和更新 RecyclerView 適配器中的文件參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn