我正在使用新的jetpack Paging 3库。我有一个特定的用例。我想使用viewmodel在两个屏幕之间共享这些数据。
一个屏幕需要分页数据,对于第二个屏幕,我想要这些数据的简单列表(不是分页列表,我需要使用列表...)。我不想在PagingData的对象中列出。
有没有办法在没有PagingData对象的情况下获取列表?
正如您所看到的,没有变量来获取此数据。当创建flow时,我甚至在viewModel中尝试过它,但我还没有找到解决方案。
发布于 2020-12-03 09:15:01
PagingData
只是增量加载事件的无状态流,所以它不包含这种状态。
但是,PagingDataAdapter
/ Differ (以及类似的其他展示者端变体)已经需要保存数据,因此它们公开了诸如PagingDataAdapter.snapshot()
之类的API,这些API可以为您提供当前的展示项列表。
请记住,呈现的数据是转换后的,可能不包括由于超过maxSize
而丢弃的页面,也可能与fetcher竞争,因为在加载数据和在UI中显示数据之间需要一段时间。
这实际上取决于您对跟踪感兴趣的内容,但从抓取器方面(跟踪预转换),您可以从PagingSource
返回的结果构建列表,也可以在PagingData
上编写一个无操作的.map()操作符,该操作符将看到每一项(但不会给您提供有关订单的信息)。
不幸的是,Paging3还没有提供一个非ui收集器,可以为你构建这种状态(在测试中最有用),但希望这是我们未来可以研究的东西。
https://stackoverflow.com/questions/65112403
复制相似问题