Я отрабатываю свои навыки работы с Android (новичок), создавая приложение со списком покупок. У меня есть две таблицы в моей базе данных, таблица shopping_item
(элементы, которые я хочу купить) и таблица reference_item
(элементы, которые я знаю, категорию и цену за единицу). Каждый раз, когда я добавляю товар для покупок, появляется поле refId
, ссылающееся на соответствующий идентификатор ссылочного товара. Это значение по умолчанию для эталонного товара по умолчанию, если на товар еще нет ссылки.
Я использую модель MVVM. Затем у меня есть DAO
, repository
, viewModel
и мой fragments
, которые отображают данные.
Когда я добавляю новый товар, я хочу знать, есть ли соответствующий ссылочный товар. Я хочу сделать следующее Query
:
@Query(value = "SELECT refId FROM reference_items WHERE reference_item_name = :refName")
suspend fun getRefItem(refName : String) : Int
Он возвращает идентификатор ссылочного элемента, соответствующий как Int, или имеет значение NULL, если на него еще нет ссылки. В моем репозитории есть такая функция:
suspend fun getRefItem(refName : String) = db.getShoppingDao().getRefItem(refName)
На данный момент я думаю, что у меня все в порядке. Думаю, ошибки не было видно.
Проблема начинается, когда я пытаюсь реализовать свой viewModel
. Что я должен делать? А как насчет моего fragment
?
В моем fragment
есть addNewItem(name: String, amount: Int)
функция для добавления нового элемента. Я могу найти справочный элемент, соответствующий предоставленному name
.
Я пробовал несколько вещей, используя LiveData
, suspend
функции, _18 _ / _ 19_, но сейчас я заблудился. Во всех руководствах или примерах используется LiveData
или запрашивать все данные из базы данных. Я просто хочу один Integer
, один раз, я думаю, нет необходимости в LiveData
.