Im использует модификацию (1.9) и пытается выяснить, как я могу вызвать 2 apis и объединить результаты.
Я думаю, результаты должны быть объединены, когда последний api закончил возвращать ответ...
Как я могу это сделать?
Udpate, согласно ответам Antons, я пробовал следующее:
добавлен в gradle:
compile 'io.reactivex:rxjava:1.0.+'
compile 'io.reactivex:rxandroid:0.23.+'
Интерфейс Api
@GET("/maps/api/place/details/json")
Observable<PlaceDetailResult1> getPlacesFrom1( @Query("key") String key, @Query("placeid") String placeid);
@GET("api/places/{id}/ratings")
Observable<PlaceDetailResult2> getPlacesFrom2(@Path("id") String id);
В фрагменте
IPlaces api = adapter.create(IPlaces.class); //endpoint1
IPlaces api2 = adapter2.create(IPlaces.class); //endpoint2
Observable.combineLatest(
api.getPlacesFrom1("key", placeId),
api2.getPlacesFrom2(placeId),
new Func2<PlaceDetailResult1, PlaceDetailResult2, MergedReviews>() {
@Override
public MergedReviews call(PlaceDetailResult placeDetailResult1, PlaceDetailResult2 placeDetailResult2) {
// processToMerge( placeDetailResult1, placeDetailResult2)
return mr;
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MergedReviews>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(MergedReviews mr) {
SetAdapter(mr.reviews);
SetPhotosAdapter(mr.photos);
}
});
Одна вещь, которую стоит отметить, когда я добавил RxJava в gradle, я получал некоторую ошибку, которая ушла после того, как я сделал multiDexEnabled true
в файле gradle