如何在"活动"中实例化ViewModelFactory



有人能帮助我如何在活动中实例化视图模型库吗

有人能帮我如何在活动中安装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())
}

最新更新