Я хочу сделать Запрос, чтобы собрать всех птиц в семье, и я не уверен, как это сделать. Я уже сделал это, но чувствую, что что-то упустил:
DAO:
@Query("Select * from bird WHERE family=:family")
public LiveData<List<Bird>> getBirdsFromFamily(String family);
Репозиторий:
private LiveData<List<Bird>> allBirdsFromFamily;
private String family;
public BirdRepository(Application application){
Database database = Database.getInstance(application);
dao = database.dao();
allBirdsFromFamily = dao.getBirdsFromFamily(family);
}
public LiveData<List<Bird>> getBirdsFromFamily(String family){
return allBirdsFromFamily;
}
Просмотр модели:
private LiveData<List<Bird>> allBirdsFromFamily;
private String family;
public BirdViewModel(@NonNull Application application) {
super(application);
birdRepository = new BirdRepository(application);
allBirdsFromFamily = birdRepository.getBirdsFromFamily(family);
}
public LiveData<List<Bird>> getAllBirdsFromFamily(String family)
{
return allBirdsFromFamily;
}
У меня есть список семей и список птиц.
При нажатии на элемент из списка семей, я хочу открыть список со всеми птицами внутри. Я могу получить строку из элемента, но при вызове метода ничего не появляется.
String family = intent.getStringExtra(AddEditFamilyActivity.EXTRA_FAMILY);
birdViewModel.getAllBirdsFromFamily(family).observe(this, new Observer<List<Bird>>() {
@Override
public void onChanged(@Nullable List<Bird> birds) { //everytime something changes, the adaptater is updated
//update the recycler view
adapter.submitList(birds);
}
});