Android 使用Kotlin中的新参数分页3.0列表
我有以下代码:Android 使用Kotlin中的新参数分页3.0列表,android,kotlin,pagination,paging,flow,Android,Kotlin,Pagination,Paging,Flow,我有以下代码: val history: Flow<PagingData<Any>> = Pager(PagingConfig(pageSize = 10)) { PaginationBaseDataSource(apiService) }.flow .cachedIn(viewModelScope) valhistory:Flow=Pager(PagingConfig(pageSize=10)){ 分页BaseDataSource(apiServ
val history: Flow<PagingData<Any>> = Pager(PagingConfig(pageSize = 10)) {
PaginationBaseDataSource(apiService)
}.flow
.cachedIn(viewModelScope)
valhistory:Flow=Pager(PagingConfig(pageSize=10)){
分页BaseDataSource(apiService)
}.流动
.cachedIn(viewModelScope)
当前显示的是没有任何附加参数的项目列表。这个很好用。。。但是现在我希望根据用户可以在前端更改的某些参数来查询此列表,假设我希望添加参数3作为查询
val history: Flow<PagingData<Any>> = Pager(PagingConfig(pageSize = 10)) {
PaginationBaseDataSource(apiService, 3)
}.flow
.cachedIn(viewModelScope)
valhistory:Flow=Pager(PagingConfig(pageSize=10)){
PaginationBaseDataSource(apiService,3)
}.流动
.cachedIn(viewModelScope)
问题是。。。如何动态设置此查询参数?假设用户使用6,然后使用9,而不是3。我怎样才能做到这一点
非常感谢您只要您的参数发生更改,您就会希望发出新的PagingData。实现这一点的流式方法可能如下所示:
val queryFlow = MutableStateFlow(value = 3)
val pagingDataFlow = queryFlow.flatMapLatest { query ->
Pager(...) { MyPagingSource(query) }.flow.cachedIn(viewModelScope)
}
它可以工作,但是如何防止列表在返回到片段时刷新?此解决方案似乎无法使用cachedIn。您无法完全阻止它,因为这需要阻止lifecycle销毁您的片段。确保实现PagingSource.getRefreshKey以允许片段从上次查看的位置恢复。在这种情况下,DiffUtil将有助于顺利过渡到用户,因此我的列表中的任何“刷新”项在刷新时都不会发生更改。你能帮我解决这个问题吗:它是关于第三页的。