【问题标题】:Rx Java and Retrofit api call for each item of previous call为先前调用的每个项目调用 Rx Java 和 Retrofit api
【发布时间】:2017-07-14 13:49:56
【问题描述】:

我有这个API接口

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

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

【问题讨论】:

标签: java android api retrofit rx-java


【解决方案1】:

如果您使用的是 RxJava(根据您的 API 中的 Observable 判断,您确实是),您可以通过一些流操作来解决它,如下所示:

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

无论如何,关键是首先拉取根对象,然后从中创建一个新流(第一个平面图),然后为每个对象创建一个新的 observable 以提取评论(第二个平面图),最后将所有内容收集到一个列表中可以传递给您的适配器。

另外,不要忘记添加适当的 observeOn() 调用,以在 UI 线程上获取结果。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多