有人能帮助我如何在Activity中安装ViewModelFactory吗
有人能帮助我如何在Activity中安装ViewModelFactory吗
主要活动
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val viewModelFactory = DiaryViewModelFactory(diaryDao)
val viewModel = ViewModelProvider(this).get(DiaryViewModel::class.java)
查看模型工厂
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>>
}
1条答案
按热度按时间vd2z7a6w1#
最后示例化的viewModelFactory如下所示