我的视图模型中有一个@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。
有没有人遇到过类似的事情?