我是android新手,我正在开发一个应用程序,该应用程序使用改装和kodein以及kotlin中的mvvm从服务器检索数据我在我的应用程序中设置了一个导航抽屉,目的是当我单击导航抽屉的项目时,新活动打开,在这个活动中,我想显示recyclerview,但当新活动打开recyclerview时,我无法在recycler上设置listitem我的代码在我的存储库和viewmodel类中,我看到他们收到了数据,我在new activty中调试代码,我看到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()
我在new activity的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)
}
我的代码在主活动中工作,但当我在新活动中尝试它时。。。。。。。。。
我该怎么办?
2条答案
按热度按时间nx7onnlm1#
我自己修复了它,我把repositorie和viewmodel放在companion对象中,而不是在newactivity中创建新的viewmodel,我称之为mainactivity的viewmodel
此主活动id:
}
这是新活动:
我把这个放在新活动的oncreate()方法中:
地狱尽头xd
tyg4sfes2#
解决此问题的最佳方法是在“活动”中创建viewmodel,也可以使用共享viewmodel。因此viewmodel将保留为活动保留
https://stackoverflow.com/a/52611554/8868638