gpt4 book ai didi

android - Clean Architecture 和 Paging 3.0 with Room

转载 作者:行者123 更新时间:2023-12-05 00:19:03 25 4
gpt4 key购买 nike

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

 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 中使用,而不会将房间数据库作为依赖项...例如:
data class Example(

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

@Expose
@SerializedName(SITE_NAME_COLUMN_NAME)
val siteName: String?
}
后来在databseImplementation中,我将Entity类映射到核心类,并且可以在分页2中映射pagedlist,现在我似乎无法访问Entity的PagingData对象,只能添加到它(标题,分隔符.. .etc)我怎样才能克服这个设计难题?

最佳答案

从下面的documentation可以看出,可以在 PagingData 中的项目到达您的 ViewModel 之前对其进行转换。
在您的存储库中,您应该有一些类似的东西

val flow = Pager(PagingConfig(pageSize = 20)) {
ExamplePagingSource(backend, query)
}.flow
这个想法是映射 flow的内容像这样
flow.mapLatest { pagingData ->
pagingData.map { entity ->
// map to from ExampleEntity to Entity here
}
}

关于android - Clean Architecture 和 Paging 3.0 with Room,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64573115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com