首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将LiveData<PagedList<X>>映射到LiveData<PagedList<Y>>

将LiveData<PagedList<X>>映射到LiveData<PagedList<Y>>
EN

Stack Overflow用户
提问于 2018-02-20 02:36:48
回答 3查看 3.4K关注 0票数 24

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

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

有没有人知道有一种方法可以做到这一点,而不是求助于这种不受欢迎的方法?

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

EN

回答 3

Stack Overflow用户

发布于 2018-04-05 15:35:15

DataSource和DataSource.Factory有mapBy()mapPageBy(),它们可以在这种情况下为您提供帮助。只需小心,因为这两个将限制"Y"-result-list的大小。

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

票数 20
EN

Stack Overflow用户

发布于 2019-12-14 19:51:41

对我来说,以下内容很管用:

代码语言:javascript
复制
  val dataSourceFactory = 
         cache.getDataSourceFactory(params)
              .map {
                   convertXToY(it)
                  }
票数 6
EN

Stack Overflow用户

发布于 2021-06-09 04:38:09

分页3库PagingData映射(RxPagingSource+RxJava2)

代码语言:javascript
复制
val pagingData: PagingData<X> = //TODO
pagingData.map { pagingData ->
    pagingData.mapAsync { x ->
        Single.just(Y(x))
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48872269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档