Как получить и объединить данные полученные с сервера? С первого запроса я получаю список с url, а после я должен по каждому url получить данные

Получаю список с https://api.github.com/repositories, но в элементе списка нужно показать дополнительную информацию которая берется https://api.github.com/repos/<REPO_full_name>. Как мне правильно получать данные?

Я предполагаю что можно сделать след. образом:

  1. получить список
  2. пройтись по списку и получать данные Есть ли вариант получше?

Ответы (1 шт):

Автор решения: ЮрийСПб

Можно вот так попробовать (получить список, получить детали по каждому элементу списка и всё вместе получить в итоге):

getList()
    .flatMap(items -> Observable.fromIterable(items))
    .flatMap(item -> getItemData(item))
    .toList()
    .subscribe(list -> {});

Если же вам надо что-то более сложное, например получить список, сразу отобразить что пришло и по мере загрузки отдельных элементов их отображать, то можно как-то так:

getList()
    .doOnSucess(items -> {/*show all*/})
    .flatMap(items -> Observable.fromIterable(items))
    .subscribe(item-> {/*show item details*/});
→ Ссылка