0

我的视图模型中有一个@Assisted 参数,所以:

class LugaresViewModel @AssistedInject constructor(val repository: LugaresRepository,
                                           **@Assisted val dataPaging: DataLugarPagging**,
                                           val composite: CompositeDisposable,
                                           val lugaresDataSourceFactory: DataSource.Factory<Int, Lugar>): ViewModel() {

    var lugaresList: LiveData<PagedList<Lugar>>
    
    init {
        repository.getDataLugarPaging(codCiudad = dataPaging.codCiudad, nomCategoria = dataPaging.nomCategoria)      

        val config = PagedList.Config.Builder()
            .setPageSize(POST_PER_PAGE)
            .setEnablePlaceholders(false)
            .build()

        lugaresList = LivePagedListBuilder(lugaresDataSourceFactory, config).build()
    }

    class Factory(private val assistedFactory: LugaresViewModelAssistedFactory, private val dataPaging: DataLugarPagging) : ViewModelProvider.Factory {
        override fun <T : ViewModel?> create(modelClass: Class<T>): T {
            return assistedFactory.create(dataPaging) as T
        }
    }

参数是@Assisted val dataPaging: DataLugarPagging.

现在,我想使用该参数并注入我的依赖关系图中,以便在我的存储库中使用它:

class DefaultLugaresRepository @Inject constructor(val remote: RemoteDataSource,
                                                   val local: LocalDataSource,
                                                   var dataPaging: DataLugarPagging,
                                                   val compositeDisposable: CompositeDisposable): LugaresRepository {

    private var pageNum = 1
    private val executor = Executors.newSingleThreadExecutor()
    private val helper = PagingRequestHelper(executor)
    private lateinit var rType: PagingRequestHelper.RequestType
    val networkState = MutableLiveData<Resource<List<Lugar>>>()
    var banner: MutableLiveData<String> = MutableLiveData()

    var codCiudad: String = ""
    var nomCategoria: String = ""

    lateinit var dataLugarPaging: DataLugarPagging

    override fun getDataLugarPaging(codCiudad: String, nomCategoria: String): DataLugarPagging {
        dataLugarPaging = DataLugarPagging(codCiudad, nomCategoria)
        return dataLugarPaging
    }

    /*fun retry(nomCategoria: String, codCiudad: String) {
        getLugares(codCiudad = this.codCiudad, query = this.nomCategoria, page = )
    }*/

    override fun getLugares(codCiudad: String?, query: String, page: Int, AuthToken: String?): Observable<Resource<ResultLugares>> {
        return remote.getLugares(codCiudad = this.dataLugarPaging.codCiudad, query = this.dataLugarPaging.nomCategoria, page = page)
            .subscribeOn(Schedulers.io())
            .map {
                Resource.success(data = it)
            }
            .onErrorReturn {
                // Log.d("ArchitectureGoogle","An error occurred $it")
                //mutableListOf()
                Resource.error(data = null, message = it.message.toString())
                //UsersList(emptyList(), "An error occurred", it)
            }

    }

但是,我现在不知道如何做到这一点。我创建了一个名为:

override fun getDataLugarPaging(codCiudad: String, nomCategoria: String): DataLugarPagging {
        dataLugarPaging = DataLugarPagging(codCiudad, nomCategoria)
        return dataLugarPaging
    }

但我的 var 出现错误:

lateinit var dataLugarPaging: DataLugarPagging

由于这个原因,还没有被初始化为亲切的lateinit。

有没有人遇到过类似的事情?

4

0 回答 0