android - 将 LiveData<PagedList<X>> 映射到 LiveData<PagedList<Y>>

标签 android android-architecture-components

我需要将域对象映射到 UI 对象并使用实时分页列表显示。

我试图映射 LiveData<PagedList<X>>LiveData<PagedList<Y>>和 map PositionalDataSource<X>PositionalDataSource<Y> ,但由于包私有(private)和私有(private)限制,如果不将我的代码放在 android.arch.paging 包中并使用反射,或者使用分页库的修改版本,这两者似乎都是不可能的。

有谁知道有什么方法可以做到这一点而无需诉诸这种不受欢迎的方法吗?

(请注意,如果分页库 API 使用接口(interface)而不是抽象基类,这将不是问题 - 这将允许包装任何分页列表/数据源并添加适当的映射。)

最佳答案

DataSource 和 DataSource.Factory 有 mapBy()mapPageBy(),在这种情况下可以帮助您。请小心,因为这两个会限制“Y”结果列表的大小。

如果结果的大小与原始列表的大小不同,则 DataSource 将抛出异常。

关于android - 将 LiveData<PagedList<X>> 映射到 LiveData<PagedList<Y>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48872269/

相关文章:

android - 更改 BottomNavigationView 的图标大小

android - 没有收到有关 PagedList 更新的通知

android - 使用导航组件时如何设置对话框的目标 fragment

java - ViewModel 如何在配置更改时持久化

java - SharedPreferences 无法加载

Android WebView概览模式加载放大的图像

Android 搜索栏被剪掉的拇指

java - 当用户单击 AutoCompleteTextView 时,autocompletetextview 中的文本将被突出显示或删除

android - (Android Repository Pattern) 使用从 web 删除的项目更新电话数据库数据

android - DAO 错误 :-Type of the parameter must be a class annotated with @Entity or a collection/array of it