#android #kotlin
#Android #kotlin
Вопрос:
Код 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)
}
Я предполагаю наблюдать allWordsByDates из MyMainActivity, оттуда я вызываю функцию WordsByDates через ViewModel с датами from и to, но они никогда не меняются в репозитории, они всегда равны 0. Я попытался изменить from_date и to_date внутри функции WordsByDates, но это не сработало, моей последней попыткой было присвоить возвращаемое значение функции WordsByDates allWordsByDates, но это тоже не сработало. Любая помощь с кодом будет оценена.
Ответ №1:
похоже, что список не является статическим и изменяется при выборе, поэтому я бы изменил репозиторий следующим образом:
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))
}
для работы с Dao, как это
@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>
Комментарии:
1. Это сработало! Вы понятия не имеете, насколько ваше решение помогло мне для этого экземпляра и других. Спасибо миллион. По-видимому, я не могу пометить его как правильный ответ, потому что у меня репутация менее 15.