首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整洁的架构和带房间的分页3.0

整洁的架构和带房间的分页3.0
EN

Stack Overflow用户
提问于 2020-10-28 20:43:17
回答 1查看 879关注 0票数 1

我正在将分页更新到3.0版本,因为我使用的是干净的架构(这里重要的是我的repos和usesCases所在的核心和所有android框架类所在的应用模块之间的分离。)但是,我使用了两个模型类(一个用于查询房间中的数据,例如:

代码语言:javascript
复制
 data class ExampleEntity(
    
        @Expose
        @ColumnInfo(name = INTERVENTION_ID_COLUMN_NAME)
        @SerializedName(INTERVENTION_ID_COLUMN_NAME)
        val interventionId: String?,
    
        @Expose
        @ColumnInfo(name = SITE_NAME_COLUMN_NAME)
        @SerializedName(SITE_NAME_COLUMN_NAME)
        val siteName: String?
    }

另一个是在核心模块和useCase中使用,而不会在所有...ex中隐含房间数据库的依赖关系:

代码语言:javascript
复制
data class Example(

        @Expose
        @SerializedName(INTERVENTION_ID_COLUMN_NAME)
        val interventionId: String?,

        @Expose
        @SerializedName(SITE_NAME_COLUMN_NAME)
        val siteName: String?
    }

后来在databseImplementation中我将实体类映射到核心类,在分页2中可以映射页面列表,现在我似乎不能访问Entity的PagingData对象,只能添加(headers,seperators...etc),我如何才能克服这个设计难题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-02 23:12:27

正如您从以下documentation中看到的,可以在项目到达您的ViewModel之前在PagingData中对其进行转换。

在您的存储库中,应该有类似以下内容的内容

代码语言:javascript
复制
val flow = Pager(PagingConfig(pageSize = 20)) {
  ExamplePagingSource(backend, query)
}.flow

其思想是像这样映射flow的内容

代码语言:javascript
复制
flow.mapLatest { pagingData ->
        pagingData.map { entity -> 
            // map to from ExampleEntity to Entity here
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64573115

复制
相关文章

相似问题

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