Ошибка - получаю null при попытке получить из базы данных Room список объектов через (объекты точно есть)
У меня прописаны методы в Dao, в Repository, в ViewModel и в Activity чтобы получить из Room базы список List, но я получаю пустой список (ошибка attempt to invoke on a null Object reference) Объекты такие точно есть, поскольку такой-же метод, только с LiveData - работает, т.е. метод LiveData<List> getNoobs выносит список всех noobs через observer. Но в данном случае мне нужно просто получить список 5 случайных обектов без ЛивДата. Получаю null. Где может быть ошибка?.. спасибо.
In PersonDao:
@Dao
public interface PersonDao {
//other methods of PersonDao
@Query("SELECT * FROM person_table WHERE status = :status ORDER BY RANDOM() LIMIT 5")
List<Person> getFivePersonsFrom(String status);
}
In PersonRepository:
public class PersonRepository {
private PersonDao mPersonDao;
private List<Person> mFivePersonsFrom;
//other methods
List<Person> getFivePersonsFrom(String status) {
PersonRoomDatabase.databaseWriteExecutor.execute(() -> {
mPersonDao.getFivePersonsFrom("noob");
});
return mFivePersonsFrom;
}
}
In PersonViewModel:
public class PersonViewModel extends AndroidViewModel {
private PersonRepository mRepository;
public List<Person> mFivePersonsFrom;
public PersonViewModel(@NonNull Application application) {
super(application);
mRepository = new PersonRepository(application);
mFivePersonsFrom = mRepository.getFivePersonsFrom("noob");
//other methods
}
public List<Person> getFivePersonsFrom() {
mRepository.getFivePersonsFrom("noob");
return mFivePersonsFrom;
}
}
In MainActivity:
private CardStackView noobCardStackView;
private NoobAdapter noobAdapter;
List<Person> noobList;
// other
protected void onCreate(Bundle savedInstanceState) {
noobViewModel = new ViewModelProvider(this,
ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication()))
.get(PersonViewModel.class);
noobList = noobiewModel.getFivePersonsFrom();
noobAdapter = new NoobAdapter(new NoobAdapter.NoobDiff(), noobList);
noobCardStackView.setAdapter(noobAdapter);
// methods
}