我是安卓新手,正在使用Retrofit、Kodein和Kotlin的MVVM模式开发一个从服务器获取数据的应用。在我的应用中设置了导航抽屉,目的是当我点击导航抽屉中的项目时,在新的活动中显示RecyclerView。但是,当新的活动打开时,RecyclerView无法设置列表项。我在我的仓库类和ViewModel类中调试代码,发现它们已经接收到了数据。我在新活动中调试我的代码,发现ViewModel无法接收那些数据,并在ViewModel.observe旁边设置了一个无效的图标。
以下是我的仓库类:
这是新活动的内容:
在新活动中,我在onCreate方法中使用了这段代码:
我在MainActivity中也使用了ViewModelProvider.of代码。
这是为了设置数字产品的Recycler视图:
我的代码在MainActivity中运行正常,但是当我尝试在新的Activity中运行时......我该怎么办?
以下是我的仓库类:
fun getdigitalproduct(): LiveData<List<DigitalProduct>>{
val dpData:MutableLiveData<List<DigitalProduct>> = MutableLiveData<List<DigitalProduct>>()
val apiClient = ApiClient()
val call:Call<List<DigitalProduct>> = apiClient.getClient().create(ApiService::class.java).getdigitalproduct()
call.enqueue(object : Callback<List<DigitalProduct>>{
override fun onResponse(
call: Call<List<DigitalProduct>>,
response: Response<List<DigitalProduct>>
) {
dpData.value = response.body()
}
override fun onFailure(call: Call<List<DigitalProduct>>, t: Throwable) {
dpData.value = null
}
})
return dpData
}
这是用于视图模型的
var repoDigitalProduct: LiveData<List<DigitalProduct>> = repositorys.getdigitalproduct()
fun getdigitalproduct(): LiveData<List<DigitalProduct>>{
return repoDigitalProduct
}
这是新活动的内容:
private fun getDigitalProduct() {
viewModel.getdigitalproduct().observe(this, Observer {
digipro.addAll(it)
})
这是Digipro:
var digipro: ArrayList<DigitalProduct> = ArrayList()
在新活动中,我在onCreate方法中使用了这段代码:
viewModel = ViewModelProviders.of(this, factory).get(AllViewModel::class.java)
getDigitalProduct()
setdigitalProductRecycler()
我在MainActivity中也使用了ViewModelProvider.of代码。
这是为了设置数字产品的Recycler视图:
private fun setdigitalProductRecycler() {
val digiproRecycler = digital_product_recycler
digiproRecycler.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)
digiproRecycler.adapter = DigitalProductAdapter(digipro)
}
我的代码在MainActivity中运行正常,但是当我尝试在新的Activity中运行时......我该怎么办?