Android分页库-地图室数据源.Factory<;*,数据库模型>;到DataSource.Factory<;*,PresenterModel>;

Android分页库-地图室数据源.Factory<;*,数据库模型>;到DataSource.Factory<;*,PresenterModel>;,android,android-room,android-jetpack,android-paging,android-paging-library,Android,Android Room,Android Jetpack,Android Paging,Android Paging Library,我在我的应用程序中使用了两种型号: 数据库 演示者(UI) Android分页为我提供了一个DataSource.Factory @Dao 接口项目DAO{ @查询(“从项目中选择*) fun getAllProjects():DataSource.Factory ... } 当我想使用LivePagedListBuilder(dataSourceFactory,config)创建LiveData时,我需要映射: DataSource.Factory-|------>DataSource.Fa

我在我的应用程序中使用了两种型号:

  • 数据库
  • 演示者(UI)
  • Android分页为我提供了一个
    DataSource.Factory

    @Dao
    接口项目DAO{
    @查询(“从项目中选择*)
    fun getAllProjects():DataSource.Factory
    ...
    }
    
    当我想使用
    LivePagedListBuilder(dataSourceFactory,config)
    创建
    LiveData
    时,我需要映射:

    DataSource.Factory
    -|------>
    DataSource.Factory


    有没有办法做到这一点。我也愿意在这里使用RxKotlin(RxJava)实现任何方法。

    以下是我如何实现的

    数据源

    fun getDataSource(): DataSource.Factory<Int, DBModel> {
         return database.dao.getAllData()
       }
    
    现在我有了一个绑定适配器,在这里我将数据从db模型转换为域模型

    @BindingAdapter("setData")
    fun setImageScanned(recyclerView: RecyclerView, data: List<DBModel>?) {
            val adapter = recyclerView.adapter as MyAdapter
            adapter.submitList(it.asDomainModel())
        }
    }
    
    @BindingAdapter(“setData”)
    fun setImageScanned(recyclerView:recyclerView,数据:列表?){
    val adapter=recyclerView.adapter作为MyAdapter
    adapter.submitList(it.asDomainModel())
    }
    }
    
    因此,您在片段处观察数据,以便可以将数据转换为observer内部的presenter。
    asDomainModel是一个进行转换的扩展函数

    如何将数据绑定到回收视图?你在使用绑定适配器吗?@Abdul我在观察它的
    片段的
    中使用我的观察者的
    submitList
    函数。我想知道有没有办法将数据库映射到UI模型。谢谢,我真的很感激。如果没有更好的答案,我会给你打分,那太好了。
    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())
        }
    }