AndroidPaging3-从PagingData<T>对象获取数据列表

我正在使用新的 jetpack Paging 3 库。我有一个特定的用例。我想使用 viewmodel 在两个屏幕之间共享这些数据。

一个屏幕需要分页数据,而对于第二个屏幕,我想要这些数据的简单列表(不是分页列表,我需要使用列表...)。我不想在 PagingData 的对象中列出。

有没有办法在没有 PagingData 对象的情况下获取列表?

如您所见,没有获取此数据的变量。我什至在创建流时在 viewModel 中尝试过,但我还没有找到解决方案。

回答

PagingData 只是一个无状态的增量加载事件流,所以它不保存这种状态。

但是PagingDataAdapter/ 不同(以及类似的其他演示者端变体)已经需要保存数据,因此它们公开了PagingDataAdapter.snapshot()可以为您提供当前显示项目列表的API 。

请记住,呈现的数据是转换后的,可能不包括由于超出而丢弃的页面maxSize,并且还可能与 fetcher 竞争,因为在加载数据和让它显示在 UI 之间需要一些时间。

这实际上取决于您对准确跟踪感兴趣的内容,但是从 fetcher 端(跟踪预转换),您可以根据返回的结果构建列表,PagingSource也可以编写一个 no-op .map() 运算符,在PagingData该运算符上将看到每个项目(但不会为您提供有关订单的信息)。

不幸的是,Paging3 还没有提供可以为您构建这种状态的非 ui 收集器(在测试中最有用),但希望我们将来可以研究一下。

  • Paging3 seems like a complicated mess compared to Paging2
  • @diam how would you test PagingData then?

以上是AndroidPaging3-从PagingData<T>对象获取数据列表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>