Функция, возвращающая void с liveData - PullRequest
0 голосов
/ 06 июля 2019

Я использую Room для обработки своей локальной базы данных и LiveData для обработки DAO.
Поэтому я использую LiveData в качестве обработчика потоков для своих транзакций.

Вопрос в том, как я могу выполнять вставку и обновление с помощью LiveData? Или вообще как void функции могут возвращать LiveData в комнате?

@Query("select * from table")
fun getAll(): LiveData<List<T>>
@Insert
fun insert(T data): LiveData<?> // What should be the generic, since it's void?

В RxJava у нас есть что-то вроде этого:

@Insert
fun insert(T data);

1 Ответ

0 голосов
/ 06 июля 2019

Вопрос в том, как я могу вставлять и обновлять с LiveData? Или вообще, как void-функции могут возвращать LiveData в комнате?

Вы не можете использовать сам объект LiveData для вставки или обновления данных в вашей базе данных (дБ). LiveData - это обертка вокруг объекта, загруженного из БД, которую можно наблюдать.

Чтобы выполнить операции вставки / обновления, вам нужно передать объект, аннотированный аннотацией @Entity, в ваш параметр метода DAO. Вы можете сделать это, вызвав LiveData#getValue(), или просмотреть LiveData в Activity, или Fragment и обновить локальную переменную через наблюдателя и передать указанную переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...