【发布时间】:2017-03-23 16:05:18
【问题描述】:
我有两个 User 和 Image 类型的 Observable 流:
final Observable<List<Image>> images = mNetworkingService.getImages(getToken(context));
final Observable<List<User>> users = mNetworkingService.getUsers()
.onErrorReturn(new Func1<Throwable, List<User>>() {
@Override
public List<User> call(Throwable throwable) {
return Collections.emptyList();
}
});
我想根据 Image 和 User 对象中包含的 userId 将用户的名字和姓氏分配给每个图像对象的 fullName 字段。
这是我目前所拥有的,但不确定 zip 是否是最佳选择。我很接近,但是当我尝试返回图像对象的集合时出现错误,因为它需要一个列表图像,但认为它只是一个图像对象。如果有更好/更清洁的方法来执行此关联/分配,我会感兴趣。
return Observable.zip(images, users,
new Func2<List<Image>, List<User>, Observable<List<Image>>>() {
@Override
public Observable<List<Image>> call(final List<Image> images, List<User> users) {
for (Image image : images) {
for (User user : users) {
if (image.userId.equals(user.userId)) {
image.fullName = user.getFullName();
}
}
}
return Observable.from(images); // Error: Expecting List<Image> but got Image.
}
}).flatMap(new Func1<Observable<List<Image>>, Observable<List<Image>>>() {
@Override
public Observable<List<Image>> call(Observable<List<Image>> it) {
return it;
}
});
【问题讨论】:
标签: rx-java observable rx-android reactivex