android - 如何从 Repository 将参数传递给 Dao 上的查询?
问题描述
道码:
@Query("SELECT * FROM word_table WHERE transaction_date BETWEEN :from_date AND :to_date")
fun findTransactionsBetweenDates(from_date: Long, to_date: Long): LiveData<List<Word>>
存储库代码:
public var from_date: Long = 0
public var to_date: Long = 0
val allWordsByDates: LiveData<List<Word>> = wordDao.findTransactionsBetweenDates(from_date, to_date)
@Suppress("RedundantSuspendModifier")
@WorkerThread
suspend fun WordsByDates(from_date:Long, to_date:Long): LiveData<List<Word>> {
return wordDao.findTransactionsBetweenDates(from_date, to_date)
}
我想从 MyMainActivity 观察 allWordsByDates,从那里我通过 viewModel 调用 WordsByDates 函数,从日期和到日期,但它们在存储库中永远不会改变,它们总是 0。我试图从 WordsByDates 函数内部更改 from_date 和 to_date但这不起作用,我最后一次尝试是将 WordsByDates 函数的返回值分配给 allWordsByDates 但这也不起作用。任何有关代码的帮助将不胜感激。
解决方案
似乎列表不是静态的,并且会根据选择进行更改,所以我会像这样更改存储库:
private val allWordsByDatesMLD = MutableLiveData<List<Word>>()
val allWordsByDates: LiveData<List<Word>> = allWordsByDatesMLD
@WorkerThread
suspend fun WordsByDates(from_date: Long, to_date: Long) {
allWordsByDatesMLD.postValue(wordDao.findTransactionsBetweenDates(from_date, to_date))
}
像这样和道一起工作
@Query("SELECT * FROM word_table WHERE transaction_date BETWEEN :from_date AND :to_date")
suspend fun findTransactionsBetweenDates(from_date: Long, to_date: Long): List<Word>
推荐阅读
- google-cloud-platform - 哪个 IAM 权限和防火墙规则优先
- javascript - 用另一个泛型接口初始化一个泛型类型对象
- flutter - 在颤动中将项目添加到提供者
- metasploit - 无法将 shell 升级到 Meterpreter 会话
- azure-vm - Restores.TriggerAsync 中的“由于参数无效或参数格式不正确,恢复操作失败”
- javascript - javascript中的字符串连接
- python - 如何修复错误 'UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 36188: character maps to
' - javascript - CORS 策略已阻止从源“null”访问 XMLHttpRequest?
- scroll - 如何在不滚动的父 div 中滚动子 div?
- java - 在“new String(..)”期间创建的无法访问的文字?