Мне нужно объединить изображения с другого разрешения на повторную установку в соответствии с конкретными сериями. То, что звучит как легкая задача, привело меня глубоко в реактивный ад без признаков надежды.RxJava - Объединить две наблюдаемые
В частности, я также создаю службу через Observable, так как мне нужно получить токен аутентификации для создания службы.
Я основывал свои попытки на этом ответе: https://stackoverflow.com/a/28418503/2192545.
public void loadSeries(String searchFor) {
mainView.showLoadingIndicator();
if (subscription != null) subscription.unsubscribe();
TVApplication application = TVApplication .get(mainView.getContext());
application.getTVService()
.flatMap(service -> service.searchSeries(searchFor)
.flatMap(series -> Arrays.asList(series).stream()
.<List<Series>>flatMap(aSeries -> {
Observable<Series> obsSeries = Observable.just(aSeries);
Observable<ImageListWrapper> obsImages = service.queryImages(aSeries.getId(), "poster");
return Observable.zip(obsSeries, obsImages, (Series s, ImageListWrapper i) -> combineSeriesData(s, i));
})));
}
private Series combineSeriesData(Series s, ImageListWrapper i) {
s.setPosters(i.getImages());
return s;
}
Я в пути над головой. Я просто получить «Не удается вывести функциональный тип интерфейса» на func2 части Observable.zip в IDE, журнал сборки говорит:
Error:(63, 58) error: incompatible types: bad return type in lambda
expression
no instance(s) of type variable(s) T1,T2,R exist so that Observable<R> conforms to Stream<? extends List<Series>>
where T1,T2,R are type-variables:
T1 extends Object declared in method <T1,T2,R>zip(Observable<? extends T1>,Observable<? extends T2>,Func2<? super T1,? super T2,? extends R>)
T2 extends Object declared in method <T1,T2,R>zip(Observable<? extends T1>,Observable<? extends T2>,Func2<? super T1,? super T2,? extends R>)
R extends Object declared in method <T1,T2,R>zip(Observable<? extends T1>,Observable<? extends T2>,Func2<? super T1,? super T2,? extends R>)