Передача значения в 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
}
});
Нечто похожее на выше. Вы можете добавить настройку в соответствии с вашим вариантом использования.