使用RxJava将列表转换为另一个列表

时间:2018-03-07 11:43:55

标签: android rx-java rx-java2

需要有点奇怪。我想将列表转换为新列表。例如,将List<Android>转换为List<AndroidWrapper>

班级AndroidWrapper有两个字段。

public class AndroidWrapper {
    private Android mAndroid;
    private String mAvatarUrl;

    public AndroidWrapper(Android android, String avatarUrl) {
        this.mAndroid = android;
        this.mAvatarUrl = avatarUrl;
    }
}

字段mAvatarmAndroid字段相关,可以从远程服务器获取。

Observable<String> fetchAvatarUrl(Android android)

那么如何使用RxJava2呢?

1 个答案:

答案 0 :(得分:2)

将您的列表转换为ObservableflatMap依赖调用,创建最终对象类型并将其收集到列表中:

Observable.fromIterable(androids)
.flatMap(android ->
     fetchAvatarUrl(android)
     // go into a backgroud thread
     .subscribeOn(Schedulers.io())
     // combine the result with the original value
     .map(url -> new AndroidWrapper(android, url))
     // limit the maximum concurrent fetch calls
     , 1
)
.toList();