我是RxAndroid的新手并试图将反应链接起来。
我正在使用此github API来检索数据。除了每个问题,还有与之关联的评论链接和事件链接,我想要获取和更新现有对象以及注释和事件列表,以形成类似这样的内容。
IList<T>
我可以使用以下代码检索初始响应
ICollection<T>
现在如何在更新适配器之前检索注释和事件?我想展示3条评论和3个活动。
答案 0 :(得分:2)
感谢@Riccardo Ciovati的榜样!
这是我的解决方案。它完美无缺!
public static void getIssuesForRepo(final IssuesListAdapter adapter) {
GitHubService gitHubService = ServiceFactory.createServiceFrom(GitHubService.class, GitHubService.ENDPOINT);
gitHubService.getIssuesList()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(issues -> Arrays.asList(issues))
.flatMap(issues -> Observable.from(issues))
.filter(issue -> issue.getCommentsUrl() != null)
.flatMap(new Func1<Issue, Observable<Issue>>() {
@Override
public Observable<Issue> call(Issue issue) {
return gitHubService.getComments(issue.getNumber())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(comments -> {
issue.setCommentList(Arrays.asList(comments));
return issue;
});
}
})
.toList()
.subscribe(adapter::add);
}
,其中
public interface GitHubService {
String ENDPOINT = "https://api.github.com/";
@GET("repos/crashlytics/secureudid/issues")
Observable<Issue[]> getIssuesList();
@GET("repos/crashlytics/secureudid/issues/{number}/comments")
Observable<Comment[]> getComments(@Path("number") long number);
}