我刚刚开始钻研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个用户的列表。
我知道这可能是微不足道的事情,我无法弄明白。任何帮助将不胜感激。
答案 0 :(得分:7)
Observable.toList
将Observable<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())
}
});