【发布时间】:2021-03-13 03:24:24
【问题描述】:
我是 android 新手,我正在开发一个应用程序,该应用程序使用 kotlin 中的改造和 kodein 和 MvvM 从服务器检索数据 我在我的应用程序中设置了一个导航抽屉,目的是当我点击导航抽屉的项目时 新活动打开,在此活动中我想显示 recyclerview 但是当新的活动打开 recyclerview 时无法在 recycler 上设置 listitem 我在我的存储库和 viewmodel 类中调试我的代码,我看到他们收到了数据 我在新活动中调试我的代码,我看到 viewmodel 无法接收这些数据并在 viewmodel.observe 中的代码旁边设置了一个无效图标
这是我的存储库类:
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
}
这是给 ViewModel 的
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 代码
这是给 setdigitalProductRecycler 的:
private fun setdigitalProductRecycler() {
val digiproRecycler = digital_product_recycler
digiproRecycler.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)
digiproRecycler.adapter = DigitalProductAdapter(digipro)
}
我的代码在 Mainactivity 中有效,但当我在新活动中尝试时......
我该怎么办?
【问题讨论】:
标签: java android kotlin mvvm retrofit2