Передача значения в LiveData в Android

Я новичок в разработке и знаю, что стек не для "запросов полного кода". Но я застрял и не могу найти решение.

я использую Room база данных, которая имеет две колонки - firstName а также lastName, Я загружаю базу данных с пройденным firstName параметр:

@Query("SELECT * FROM passenger WHERE firstName LIKE :firstName")
List<Passenger>getAllByName (String firstName);

Это работает как положено.

Но.. Когда я хочу обновить PassengerМне нужно заполнить данные снова, снова и снова. Там приходит LiveData а также observer,

Но.. setValue в LiveData является частным, и я не могу отправить параметры для строки запроса. Приходит MutableLiveData, но как я могу это реализовать?

1 ответ

@Eduardas Похоже, вам нужно вместо этого вернуть LiveData:

LiveData<List<Passenger>> getAllByName (String name);

И вы можете написать преобразование в ViewModel или вы можете непосредственно наблюдать его из вашей деятельности / фрагмента.

В деятельности / фрагменте onCreate() или onResume():

YourDao.getAllByName(name).observe(this, new LiveData<List<Passenger>>(){
   @Override
   public void onChanged( @Nullable List<Passenger>) {
     // update your adapter if the list isn't null
   }
});

Нечто похожее на выше. Вы можете добавить настройку в соответствии с вашим вариантом использования.