【发布时间】:2021-06-27 09:14:50
【问题描述】:
更新:如何使用 ViewModelFactory 以及是否有必要使用它来传递我们的参数?有什么好处?这会打破实时数据的概念吗?
我想将参数发送到我房间数据库的单词 Dao 以进行查询,但就我而言,我不知道如何传递该参数。所以让我们从代码开始...... WordDao.kt
@Dao
interface WordDao {
@Insert
fun insert(word: Word)
@Update
fun update(word: Word)
@Delete
fun delete(word: Word)
@Query("delete from En_Fa")
fun deleteAllNotes()
@Query("SELECT * FROM En_Fa ORDER BY id ASC")
fun getAllNotes(): LiveData<List<Word>>
@Query("Select * From En_Fa WHERE date == :today ")
fun getTodayWords(today: String): LiveData<List<Word>>
}
WordRepository.kt
class WordRepository(private val wordDao: WordDao, today: String) {
val readAllData: LiveData<List<Word>> = wordDao.getAllNotes()
val readToday: LiveData<List<Word>> = wordDao.getTodayWords(today)
fun addWord(word: Word) {
wordDao.insert(word)
}
}
WordViewModel.kt
class WordViewModel(application: Application): AndroidViewModel(application) {
val readAllData2: LiveData<List<Word>>
private val repository: WordRepository
init {
val wordDao = WordDatabase.getInstance(application).wordDao()
repository = WordRepository(wordDao, today)
readAllData2 = repository.readToday
}
fun addWord(word: Word){
viewModelScope.launch(Dispatchers.IO){
repository.addWord(word)
}
}
}
这是在我的片段中创建此 wordview 模型类的对象的代码行
private val mWordViewModel: WordViewModel by viewModels()
那么如何将我的(今天)变量从我的片段传递到我的 WordViewModel 类
【问题讨论】:
标签: android kotlin android-room android-livedata android-viewmodel