有人能帮助我如何在活动中实例化视图模型库吗
有人能帮我如何在活动中安装VIEWMODELFACTORY吗
主要活动
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val viewModelFactory = DiaryViewModelFactory(diaryDao)
val viewModel = ViewModelProvider(this).get(DiaryViewModel::class.java)
VIEWMODELFACTORY
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(DiaryViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return DiaryViewModel(diaryDao) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
应用程序类
val database : DiaryDatabase by lazy {
DiaryDatabase.getDatabase(this)
}
}
DAO类
interface DiaryDao {
@Query("SELECT * from diary WHERE id = :id")
fun getItem(id: Int): Flow<Entry>
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(entry: Entry)
@Update
suspend fun update(entry: Entry)
@Delete
suspend fun delete(entry: Entry)
@Query("SELECT * from diary ORDER BY id ASC")
fun getItems(): Flow<List<Entry>>
}
最终实例化的viewModelFactory,如下
val viewModel: DiaryViewModel by viewModels{
DiaryViewModel.DiaryViewModelFactory((application as DiaryApplication).database.diaryDao())
}