【发布时间】:2020-03-11 07:51:06
【问题描述】:
我在片段中使用 ViewModelProvider.Factory 创建 ViewModel。一切正常。
var reportViewModel = ViewModelProviders.of(this,ViewModelProvide(RemoteDataProviderImpl(
WeakReference(context!!))))
.get(ReportViewModel::class.java)
但是在我直接使用实例创建视图模型然后一切正常
var reportViewModel = ReportViewModel(RemoteDataProviderImpl(WeakReference(context!!)))
很简单的ViewModel
class ReportViewModel(private var provider:RemoteDataProvider) : ViewModel(){
var posts = MutableLiveData<List<Report>>()
fun getPost(){
provider.getComments().enqueue(object : Callback<ArrayList<Report>> {
override fun onFailure(call: Call<ArrayList<Report>>, t: Throwable) {
t.message
}
override fun onResponse(
call: Call<ArrayList<Report>>,
response: Response<ArrayList<Report>>
) {
if (response.isSuccessful){
val reports = response.body()
posts.value = reports
}
}
})
}
}
这两个代码有什么区别。如果我可以直接创建 viewModel 为什么我需要 ViewModelProviders?
【问题讨论】:
标签: android kotlin mvvm viewmodel android-jetpack