Rx Java和Retrofit api调用前一个调用的每个项目

时间:2017-07-14 13:49:57

标签: java android api retrofit rx-java

我有这个API接口

@GET("api/..../{commentId}")
Observable<DiscussionPostRoot> getCommentsInPost(@Path("commentId") String commentId)

DiscussionPostRoot有一些字段和List对象,对于这个列表的每个对象,我想调用相同的API调用但具有不同的值。目前我正在做foreach,但API结果来自不同的时间,我的适配器获得随机值。该怎么办 ;) ?我更喜欢没有lambda的答案,但无论如何可以有lambda :)

1 个答案:

答案 0 :(得分:0)

如果您正在使用RxJava(并且通过您的API中的Observable进行判断,那么您可以使用这样的流操作来解决它:

https://gist.github.com/tnovoselec/73ba4946d4116e8f05946b5e40a3a031

无论如何,重点是先拉根对象,然后从中创建一个新流(第一个flatmap),然后为每个对象创建一个新的observable来拉取注释(第二个flatmap),最后将所有内容收集到一个列表中可以传递给您的适配器。

另外,不要忘记添加正确的observeOn()调用,以便在UI线程上获得结果。