Мне нужно заполнить поля объекта, чтобы опубликовать его в API.
Я использую rx java и комнату, но моя цепочка заказов не работает
My daos
@Dao
abstract public class PokemonDao implements BaseDao<Pokemon>{
@Query("SELECT * FROM pokemons ORDER BY id ASC")
abstract public Flowable<List<Pokemon>> getAll();
}
@Dao
abstract public class NoteDao implements BaseDao<Note>{
@Query("SELECT * FROM notes WHERE idPokemon = :idPokemon ORDER BY registerDate DESC")
abstract public Flowable<List<Note>> getNotes(int idPokemon);
}
Мне нужно создать объект, содержащий данные покемона со списком связанных заметок
Я сделал следующее на моей модели просмотра
pokemonRepository.getFavourites()
.toObservable()
.flatMap(new Function<List<Pokemon>, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(List<Pokemon> favourites) throws Exception {
return Observable.fromIterable(favourites);
}
})
.flatMap(new Function<Object, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(Object o) throws Exception {
return getNotesObservable((Favourite) o);
}
})
.toList()
.toObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new SingleObserver<List<Object>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(List<Object> objects) {
}
@Override
public void onError(Throwable e) {
}
})
Я тоже использую этот метод
private Observable<Object> getNotesObservable(Pokemon favourite) {
Observable<Object> lolo = noteRepository.getNotes(Integer.parseInt(favourite.getId()))
.map(new Function<List<Note>, Object>() {
@Override
public Favourite apply(List<Note> notes) throws Exception {
favourite.notesList= notes;
return favourite;
}
})
.toObservable();
return lolo;
}
Моя проблема в том, что в subscribeWith метод onNext никогда не вызывается. Моя цель состоит в том, чтобы при вызове onNext у него был список покемонов, и у каждого покемона были свои записи
Спасибо