【问题标题】:How to Use FirebaseFirestore with Paging 3 Library?如何将 FirebaseFirestore 与 Paging 3 库一起使用?
【发布时间】:2021-05-21 10:26:18
【问题描述】:

我想构建一个像 Twitter 这样的应用程序,我必须在其中显示一个包含实时更新的数据集列表,以便实时计算点赞数和 cmets。

为此,我正在使用

  1. RecyclerView - 用于显示可滚动数据列表
  2. Jetpack LiveData - 用于观察变化并通知观察者。
  3. Firestore - 作为通过快照更改获取实时数据的后端。
  4. 分页 3 - 用于将大量数据按块加载到列表中。

但是我如何通过向列表发出实时更改来实现具有 PaggingSource 类的 firestore 查询?

class FirebasePagingSource() : PagingSource<QuerySnapshot,ItemModel>() {

override fun getRefreshKey(state: PagingState<QuerySnapshot, ItemModel>): QuerySnapshot? {
 // Need guidance for implementation
}

override suspend fun load(params: LoadParams<QuerySnapshot>): LoadResult<QuerySnapshot, ItemModel> {
 //Need guidance for implementation
} }

这里的ItemModel是一个数据类

2。 ItemListLiveData 类

class FirestoreQueryLiveData(private val query: Query)
: LiveData<List<Item>>(), EventListener<QuerySnapshot> {

private lateinit var registration: ListenerRegistration

override fun onActive() {
    super.onActive()
    registration = query.addSnapshotListener(this)
}

override fun onInactive() {
    super.onInactive()
    registration.remove()
}

override fun onEvent(snapshot: QuerySnapshot?, error: FirebaseFirestoreException?) {
    snapshot?.let {
        val documents= mutableListOf<Item>()
        for (document in snapshot.documents) {
            document.toObject(Item::class.java)?.let {
                documents.add(it)
            }
        }
        postValue(documents)
    }
} }

【问题讨论】:

标签: android firebase google-cloud-firestore android-livedata android-paging-3


【解决方案1】:

网上有很多有用的指南。通常,您可以将 Firestore 中的分页数据流设置到 Recycler View 中,然后只需对每个请求进行分页即可。

这可能是一个漫长而复杂的过程,因此我将链接推荐的教程、其来源和相关的 youtube 指南。

【讨论】:

  • .await () 不起作用-> 无法解决的参考
  • .await() 不是一个东西 - 您应该评估您的代码并确保它与您正在遵循的任何教程等效
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多