android 将来自paging3的分页数据流转换为分页数据的状态流

j9per5c4  于 2023-01-03  发布在  Android
关注(0)|答案(2)|浏览(187)

我正在jetpack库中学习使用paging3分页,我正在调用一个API来接收文章列表,我注意到使用Pager在存储库中调用后收到的结果是一个包含所需结果的PagingData流,如下所示:

Flow<PagingData<Articles>>

当我在我的ViewModel中接收到这个流时,我想将它转换成一个状态流。我尝试过使用stateIn运算符,但它需要一个默认值,我认为这将是一个状态流,这是我卡住的地方。我如何将PagingData流转换成一个状态流?这样做是否可取?

zzwlnbp8

zzwlnbp81#

我还有一个问题:当你得到文章并在UI上显示它们时,为什么你想把PagingData的流转换成Stateflow?
在我的实践中,不需要触摸Stateflow。如果我想获得带有分页库3的文章。请注意FlowArticleRemoteMediator: RemoteMediator<Int, ArticleEntity> ...
我认为这篇文章可以帮助你存档你的目标。(获取文章与寻呼3)https://medium.com/nerd-for-tech/pagination-in-android-with-paging-3-retrofit-and-kotlin-flow-2c2454ff776e

olmpazwi

olmpazwi2#

我认为这取决于使用情况,而使用常规流时,每个新订户都会触发新流发射,这可能导致资源浪费(不必要的网络请求)在配置改变例如屏幕配给时,如果您希望这样一种行为,那么在不考虑使用StateFlow情况下使用Regular是可以的。您可以使用stateIn扩展将常规流量排放转换为StateFlow,并将初始状态设置为空,如下所示。

someFlow.stateIn(coroutineScope, SharingStarted.WhileSubscribed(), PagingData.empty())

根据文档,PagingData.empty()会立即显示一个空的项目列表,并将任何加载状态更新发送给演示者

相关问题