Итак, мой общий вопрос - как вызвать функцию из модели представления для @Query, где нужно что-то передать, а затем вернуть что-то. Мой простой пример:
DAO
@Query ("SELECT * FROM table_name WHERE id = :id LIMIT 1")
fun getItemById (id: Long) : MyItem
Репо
fun getItemById (id: Long) : MyItem {
return itemDao.getItemById(id)
}
Я знаю, что это не может и не должно быть сделано на пользовательском интерфейсе. Для вставки и удаления элемента я использую задание viewModelScope, но я не могу (возможно, просто не знаю, как) использовать его для возврата чего-либо. Если я возвращаю его везде как LiveData, то он работает так:
ViewModel
fun itemById(id: Long): LiveData<MyItem> {
return itemRepo.getItemById(id)
}
И затем я наблюдаю это во фрагменте / действии:
viewModel.itemById(id).observe(this, Observer {
// using it
})
Дело в том, что я действительно не нуждаюсь в том, чтобы это было наблюдаемой жизнью. Мне нужно только получить его один раз, проверить состояние и все. Так что, может быть, кто-то мог бы порекомендовать, как это сделать, не будучи живым. Или я должен оставить это живые данные?