当一项状态发生更改时刷新 LazyPagingItems

Yog*_*ear 8 android android-paging android-jetpack-compose android-paging-3

基本上我有一个在可组合函数中收集的分页数据流:

val list = state.listFlow.collectAsLazyPagingItems()
Run Code Online (Sandbox Code Playgroud)

列表中的每个项目都有一个号召性用语按钮,该按钮将启用/禁用视图并更新相应项目的 UI。

我的问题是,我们如何更新项目的视觉状态,而不需要在 PagingData 上调用刷新,从而重新查询 API/数据库以获取更新的数据?

此外,如果用户滚动浏览了 5 个或更多页面,我不想重新加载整个内容,更改可以是本地的。

有关如何实现这一目标的任何线索?

Fis*_*awk 0

这对于需要不可变列表的 Paging3 来说几乎是不可能的。请参阅https://issuetracker.google.com/issues/160232968

这个问题困扰了我几个月,最后我决定放弃 Paging3 库并编写自己的分页列表以避免所有这些奇怪的功能。Paging3的复杂性大部分是因为它要将分页列表封装在一个库中,这需要视图层和模型层协同工作。

这是我实现的分页列表: https://gist.github.com/FishHawk/6e4706646401bea20242bdfad5d86a9e

如果您的项目对 paging3 库没有深度依赖,我强烈建议您尝试这样做。