【发布时间】:2022-08-20 02:57:55
【问题描述】:
当我尝试在列表片段中提供视图模型时,我正在尝试使用 mvvm 使应用程序变得简单输入,我给他一个片段的这个,我已经实现了模型的每一件事,并尝试了每一件事来修复它,但仍然
-
请发布您的代码
标签: android kotlin mvvm android-room
当我尝试在列表片段中提供视图模型时,我正在尝试使用 mvvm 使应用程序变得简单输入,我给他一个片段的这个,我已经实现了模型的每一件事,并尝试了每一件事来修复它,但仍然
标签: android kotlin mvvm android-room
为什么不尝试使用by viewModels 属性委托?
像这样的东西
private val viewModel: HomeViewModel by viewModels {
HomeViewModelFactory(AppDatabase.getInstance(requireActivity().application).databaseDao)
}
如果您将参数传递给 viewModel,您应该像我一样拥有一个 ViewModelFactory(我将 Database Dao 传递给 VM)。否则使用属性委托应该非常简单。
这是我的 ViewModelFactory 类的示例
class HomeViewModelFactory(private val dataSource: DatabaseDao) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(HomeViewModel::class.java))
return HomeViewModel(dataSource) as T
throw IllegalArgumentException("Unknown ViewModel class")
}
}
【讨论】: