我需要将域对象映射到UI对象,并使用实时分页列表进行显示。
我试图将LiveData<PagedList<X>>映射到LiveData<PagedList<Y>>,并将PositionalDataSource<X>映射到PositionalDataSource<Y>,但由于包私有和私有限制,如果不将代码放在android.arch.paging包中并使用反射,或者使用修改版本的分页库,这两者似乎都是不可能的。
有没有人知道有一种方法可以做到这一点,而不是求助于这种不受欢迎的方法?
(请注意,如果分页库API使用接口而不是抽象基类,这将不是问题-这将允许包装任何分页列表/数据源并添加适当的映射。)
发布于 2018-04-05 15:35:15
DataSource和DataSource.Factory有mapBy()和mapPageBy(),它们可以在这种情况下为您提供帮助。只需小心,因为这两个将限制"Y"-result-list的大小。
如果结果的大小与原始列表的大小不同,则DataSource将抛出异常。
发布于 2019-12-14 19:51:41
对我来说,以下内容很管用:
val dataSourceFactory =
cache.getDataSourceFactory(params)
.map {
convertXToY(it)
}发布于 2021-06-09 04:38:09
分页3库PagingData映射(RxPagingSource+RxJava2)
val pagingData: PagingData<X> = //TODO
pagingData.map { pagingData ->
pagingData.mapAsync { x ->
Single.just(Y(x))
}
}https://stackoverflow.com/questions/48872269
复制相似问题