如何在 android 中的模块化应用程序中转换 PagingSource 类型?
How can I convert PagingSource type in the modular app in android?
我有一个模块化应用程序,它有 3 个模块 feature 和 local 和 remote。
我在使用 remoteMediator 的功能模块中使用了分页。
我的 remoteMediator 使用 PagingSource 但是当我想从 Dao 获取数据时,我遇到了问题:
remoteMediator 需要 PagingSource 但本地数据库 return PagingSource.
如何将 PagingSource 转换为 PagingSource?
我的道:
@Dao
interface UsersDao {
@Query("SELECT * FROM ${Constants.USERS_TABLE}")
fun getAllUsers(): PagingSource<Int, UserEntity>
}
我的存储库:
override fun getUsers(): Flow<PagingData<UserModel>> {
val pagingSourceFactory = {
githubDatabase.usersDao().getAllUsers()
}
return Pager(
config = PagingConfig(pageSize = ITEMS_PER_PAGE),
remoteMediator = AllUsersPagingSource(
githubApi = githubApi,
githubDatabase = githubDatabase,
allUsersMapper = allUsersMapper,
allUsersRemoteLocalMapper = allUsersRemoteLocalMapper
), pagingSourceFactory = pagingSourceFactory
).flow
}
您是否尝试在 return 数据上应用映射器?
使用存储库中的映射器将数据从 UserEntity 映射到 UserModel
尝试这样的事情:
githubDatabase.usersDao().getAllUsers().map{ mapper.mapToModel(it) }
希望对您有所帮助。
我有一个模块化应用程序,它有 3 个模块 feature 和 local 和 remote。
我在使用 remoteMediator 的功能模块中使用了分页。
我的 remoteMediator 使用 PagingSource
remoteMediator 需要 PagingSource
如何将 PagingSource
我的道:
@Dao
interface UsersDao {
@Query("SELECT * FROM ${Constants.USERS_TABLE}")
fun getAllUsers(): PagingSource<Int, UserEntity>
}
我的存储库:
override fun getUsers(): Flow<PagingData<UserModel>> {
val pagingSourceFactory = {
githubDatabase.usersDao().getAllUsers()
}
return Pager(
config = PagingConfig(pageSize = ITEMS_PER_PAGE),
remoteMediator = AllUsersPagingSource(
githubApi = githubApi,
githubDatabase = githubDatabase,
allUsersMapper = allUsersMapper,
allUsersRemoteLocalMapper = allUsersRemoteLocalMapper
), pagingSourceFactory = pagingSourceFactory
).flow
}
您是否尝试在 return 数据上应用映射器?
使用存储库中的映射器将数据从 UserEntity 映射到 UserModel
尝试这样的事情:
githubDatabase.usersDao().getAllUsers().map{ mapper.mapToModel(it) }
希望对您有所帮助。