Используйте RxJava и Retrofit для перебора списка и дополнения результатов на основе подзапросов
Я использую модификацию, и я чувствую, что rxjava (с retrolambda) подойдет для следующего потока:
получить список виджетов (http)для каждого виджета
а) получить список статей (http) для данного типа виджета
б) сохранить все это в БД
c) взять первую (последнюю) статью в списке и обновить widget.articleName и widget.articleUrl соответствующими значениями из этой статьи
Однако я не уверен, что делать после шага 2а. Вот мой код до сих пор
apiService.getWidgets(token)
.flatMapIterable(widgets -> widgets)
.flatMap(widget -> apiService.getArticles(token, widget.type))
...
.toList()
.subscribe(
modifiedWidgets -> saveWidgets(modifiedWidgets),
throwable -> processWidgetError(throwable)
);
Я поигрался с некоторыми операторами, но при цепочке я всегда сужаюсь слишком далеко (например, получаю хэндл для отдельной статьи) и затем больше не имею доступа к исходному виджету для внесения изменений.
@GET("/widgets")
Observable<List<Widget>> getWidgets(@Header("Authorization") String token);
@GET("/articles")
Observable<List<Article>> getArticles(@Header("Authorization") String token, @Query("type") String type);