Я немного растерялся из-за наблюдаемого отдельного объекта и списка объектов
, когда я делаю следующее с Observable>, тогда он работает
модифицированный интерфейс MainApi:
Observable<Todo> getTodos();
в действии:
mainApi.getTodos()
.subscribeOn(Schedulers.io())
.concatMap(new Function<List<Todo>, ObservableSource<Todo>>() {
@Override
public ObservableSource<Todo> apply(List<Todo> todos) throws Exception {
return Observable.fromIterable(todos).subscribeOn(Schedulers.io());
}
})
.subscribe(new Observer<Todo>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("LogMe", ">>>Inside susbcribed>>>");
}
@Override
public void onNext(Todo todo) {
Log.d("LogMe", ">>>Inside onNExt>>>" + todo.getName());
}
@Override
public void onError(Throwable e) {
Log.d("LogMe", ">>>Inside onError>>>" +e.toString());
}
@Override
public void onComplete() {
Log.d("LogMe", ">>>Inside onComplete>>>");
}
});
Но при использовании Observable он не работает.
дооснащение интерфейса MainApi:
Observable<Todo> getTodos();
в действии:
mainApi.getTodos().subscribeOn(Schedulers.io())
.map(new Function<Todo, String>() {
@Override
public String apply(Todo todo) throws Exception {
return todo.getName();
}
})
.doOnNext(new Consumer<String>() {
@Override
public void accept(String stringObservable) throws Exception {
Log.d("LogMe", ">>>Inside >>> doOnNext");
}
})
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("LogMe", ">>>Inside susbcribed>>>");
}
@Override
public void onNext(String stringObservable) {
Log.d("LogMe", ">>>Inside onNExt>>>");
}
@Override
public void onError(Throwable e) {
Log.d("LogMe", ">>>Inside onError>>>" +e.toString());
}
@Override
public void onComplete() {
Log.d("LogMe", ">>>Inside Presenter onComplete>>>");
}
});
, тогда я получаю сообщение об ошибке:
LogMe: >>> Inside Presenter onError >>> com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY в строке 1, путь 2 столбца $
Куда я иду не так? Если возможно получить результат с помощью одной наблюдаемой, то как мне пройти через каждый элемент / объект Todo?