相关疑难解决方法(0)

在 jetpack 撰写导航中返回导航时分页 3 列表自动刷新

我正在使用 Jetpack Compose,以及 Paging 3 库和 Jetpack Navigation。我面临的问题是我有一个 LazyList,它使用分页库从远程源获取数据。

视图模型

fun getImages(): Flow<PagingData<ObjectImage>> = Pager(
        PagingConfig(PAGE_SIZE, enablePlaceholders = false)
    ) { DataHome(RANDOM) }.flow.cachedIn(viewModelScope)
Run Code Online (Sandbox Code Playgroud)

主页视图

val images = viewModelHome.getImages().collectAsLazyPagingItems()
LazyColumn {
  ...
}
Run Code Online (Sandbox Code Playgroud)

现在发生的情况是,当我使用导航到另一个视图navHostController.navigate(),然后按返回返回到 HomeView 时...LazyColumn 会重置自身并开始再次从网络加载项目。

所以我被这个问题困扰了。我尝试在 viewModel 变量中手动缓存...虽然它有效,但它搞砸了 SwipeRefresh (停止显示刷新状态)

data.apply {
            when {
                // refresh
                loadState.refresh is LoadState.Loading -> {
                    ItemLoading()
                }

                // reload
                loadState.append is LoadState.Loading -> {...}

                // refresh error
                loadState.refresh is LoadState.Error -> {...}

                // reload error
                loadState.append is LoadState.Error -> {...}
            } …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-paging android-jetpack-navigation android-jetpack-compose

10
推荐指数
1
解决办法
7981
查看次数