Из ViewModel не передается List (полученный из Single>) в Activity. RecyclerView остается пустым. В чем причина?
- >) в Activity. RecyclerView остается пустым. В чем причина?
In Dao:
@Query("SELECT * FROM person_table WHERE status = :statusname ORDER BY RANDOM() LIMIT 1")
Single<List<Person>> getGuyWho(String statusname);
In Repo:
public class PersonRepository {
private Single<List<Person>> mGuyWho;
PersonRepository(Application application) {
PersonRoomDatabase db = PersonRoomDatabase.getDatabase(application);
mPersonDao = db.PersonDao();
mGuyWho = mPersonDao.getGuyWho("debil");
}
Single<List<Person>> getGuyWho() {
return mGuyWho;
}
}
In ViewModel:
public class PersonViewModel extends AndroidViewModel {
private PersonRepository mRepository;
CompositeDisposable composite = new CompositeDisposable();
private Single<List<Person>> mGuyWho;
private List<Person> workList;
public PersonViewModel(@NonNull Application application) {
super(application);
mRepository = new PersonRepository(application);
workList = new ArrayList<>(); //инициализировали workList
mGuyWho = mRepository.getGuyWho();
mGuyWho.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<List<Person>>() {
@Override
public void onSubscribe(Disposable d) {
composite.add(d);
}
@Override
public void onSuccess(List<Person> people) {
Log.d(TAG, "onSuccess: called");
workList.addAll(people);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: called");
Toast.makeText(application, "NO DATA", Toast.LENGTH_SHORT).show();
}
});
}
public List<Person> getWorkList() {
return workList;
}
}
В Activity:
public class MudakActivity extends AppCompatActivity implements CardStackListener {
List<Person> debilList;
private PersonViewModel debilViewModel;
//декларированы вью, адаптер итд
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//инициализированы переменные
debilViewModel = new ViewModelProvider(this,
ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication()))
.get(PersonViewModel.class);
debilList = debilViewModel.getWorkList();
}
}
В recyclerView пусто, ни одного объекта (ошибок нет, приложение не "вылетает"), хотя объекты с указанным statusname "debil" совершенно точно есть, и при вызове их через LiveData благополучно вызываются. Я полагаю что я что-то некорректно прописал во ViewModel, может не в том месте. Но не могу найти. Где может быть ошибка и как поправить?