如何将 FirebaseFirestore 与 Paging 3 库一起使用?
How to Use FirebaseFirestore with Paging 3 Library?
我想构建一个像 Twitter 这样的应用程序,我必须在其中显示包含实时更新的数据集列表,以便实时计算喜欢和评论。
为此,我正在使用
- RecyclerView - 用于显示可滚动数据列表
- Jetpack LiveData - 用于观察变化并通知观察者。
- Firestore - 作为通过快照更改获取实时数据的后端。
- 分页 3 - 用于通过 chuncks 将大量数据加载到列表中。
但是我如何通过向列表发出实时更改来使用 PaggingSource class 实施 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是一个数据class
2。 ItemListLiveData Class
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)
}
} }
网上有很多有用的指南。通常,您可以将来自 Firestore 的分页数据流设置到 Recycler View 中,然后只需对每个请求进行分页即可。
这可能是一个漫长而复杂的过程,因此我将 link 推荐教程、其来源和相关的 YouTube 指南。
我想构建一个像 Twitter 这样的应用程序,我必须在其中显示包含实时更新的数据集列表,以便实时计算喜欢和评论。
为此,我正在使用
- RecyclerView - 用于显示可滚动数据列表
- Jetpack LiveData - 用于观察变化并通知观察者。
- Firestore - 作为通过快照更改获取实时数据的后端。
- 分页 3 - 用于通过 chuncks 将大量数据加载到列表中。
但是我如何通过向列表发出实时更改来使用 PaggingSource class 实施 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是一个数据class
2。 ItemListLiveData Class
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)
}
} }
网上有很多有用的指南。通常,您可以将来自 Firestore 的分页数据流设置到 Recycler View 中,然后只需对每个请求进行分页即可。
这可能是一个漫长而复杂的过程,因此我将 link 推荐教程、其来源和相关的 YouTube 指南。