我在我的应用中使用两个模型:
Android Paging给了我DataSource.Factory<*, DatabaseModel>
@Dao
interface ProjectDao {
@Query("SELECT * FROM project")
fun getAllProjects(): DataSource.Factory<Int, DatabaseModel>
...
}
[当我想使用LiveData
制作LivePagedListBuilder(dataSourceFactory, config)
时,我需要映射:
DataSource.Factory<*, DatabaseModel>
-| ----> DataSource.Factory<*, PresenterModel>
有没有可能实现这一目标的方法。我也欢迎使用RxKotlin(RxJava)完成的任何方法。
这是我的完成方式
数据源
fun getDataSource(): DataSource.Factory<Int, DBModel> {
return database.dao.getAllData()
}
视图模型变量
val scannedCompleteList=App.getRepository().getDataSource().toLiveData(
Config(
pageSize = 60,
enablePlaceholders = true,
maxSize = 200
)
)
现在我有了一个绑定适配器,可以将数据从数据库模型转换为域模型
@BindingAdapter("setData")
fun setImageScanned(recyclerView: RecyclerView, data: List<DBModel>?) {
val adapter = recyclerView.adapter as MyAdapter
adapter.submitList(it.asDomainModel())
}
}
因此,您正在按片段观察数据,因此可以将数据转换为观察者内部的演示者。asDomainModel是执行转换的扩展函数