【发布时间】:2020-04-18 04:26:27
【问题描述】:
我用 retrofit/rxJava 调用我的 API,我得到一个 Observable 响应,例如 BreedDog 的 Single List
。你可以看看我的代码:
compositeDisposable.add(breedDogsDisplayDataRepository.getBreedDogs(name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<List<BreedDog>>() {
@Override
public void onSuccess(List<BreedDog> breedDogList) {
Log.e("test", "okPresenter");
view.displayBreedDogs(breedDogToViewModelMapper.map(breedDogList));
}
@Override
public void onError(Throwable e) {
Log.e("test", "errorPresenter : " + e.toString());
// handle the error case
System.out.println(e.toString());
}
}));
这可行,但现在,对于此列表中的每个项目,我需要调用我的 API 来获取 URL 图像并更新我的列表.. 但我不知道怎么...
这是一个例子:
breedDogsDisplayDataRepository.getBreedDogs(name)
.flatMapIterable(breedDogs -> breedDogs)
.map( item -> breedDogsDisplayDataRepository.getImageBreedDog(item.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<List<BreedImageResponse>>() {
@Override
public void onSuccess(List<BreedImageResponse> breedImageResponses) {
}
@Override
public void onError(Throwable e) {
Log.e("test", "errorPresenter : " + e.toString());
// handle the error case
System.out.println(e.toString());
}
})));
我使用好方法吗?还是需要改变一些东西?
【问题讨论】: