RxAndroid - 从flatMap返回一个arraylist

时间:2015-09-28 19:05:02

标签: android retrofit rx-java rx-android

我刚刚开始钻研RxJava / RxAndroid和Retrofit。我喜欢RxAndroid提供的强大功能,但我被困在一个特定的地方,似乎无法找到解决方案。我基本上有一个API,它接受用户并从API获取有关该用户的信息,而这非常有用,我想做的不是返回每个用户的信息而是单独返回userinfo的arraylist。

 Observable.from(interestingUsers)  //3 users declared statically for test
              .flatMap(user -> gitHubService.getUserData(user))
              .observeOn(AndroidSchedulers.mainThread())
              .subscribe(gitHubUser -> Log.e("Log", "User data returned : " + gitHubUser.getName()));

上面的代码只记录了各个用户三次,我想要的是作为单个结果返回的3个用户的列表。

我知道这可能是微不足道的事情,我无法弄明白。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:7)

Observable.toListObservable<T>转换为Observable<List<T>>

Observable.from(interestingUsers)
    .flatMap(user -> gitHubService.getUserData(user))
    .toList()
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(users -> {
        for (final User user : users) {
            Log.e("Log", "User data returned : " + user.getName())
        }
    });