Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Kotlin中的新参数分页3.0列表_Android_Kotlin_Pagination_Paging_Flow - Fatal编程技术网

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将有助于顺利过渡到用户,因此我的列表中的任何“刷新”项在刷新时都不会发生更改。你能帮我解决这个问题吗:它是关于第三页的。