2017-03-25 33 views
0

ネットワークから2つのデータ型を取り出すアンドロイドアプリを持っています.1つはチャンネルリスト用、もう1つはepg用です。観測可能な値を別の観測値で使用する方法は?

ポイントは私のepg urlにチャンネルリストのチャンネルIDが含まれている必要があります。ここで私は

Observable<ChannelList> channelList = 
     NetworkService.getChannels(); 

List<String> channelIds = new ArrayList<>(); 

channelList.subscribe(chList -> { 
      for (ChannelInfo chInfo : chList.getChannelInfoList()) { 
       channelIds.add(chInfo.getId()); 
      } 
     }); 

Observable<EpgList> epgList = 
     NetworkService.getEpgList(channelIds); 

をやろうとしているものですが、メソッドが完了するまでには、IDを取得しませんので、どのように私はその時点で実行をブロックし、IDを必要としますか?

+0

は、あなたが私の解決策を試してみましたか? – shmakova

+0

ええ、私はここに別の問題があります:)後で1つの観察可能なものにそれらを圧縮したいので、データをアダプタに渡すことができ、問題が始まります – Carmine

答えて

1

これを試してみてください:

NetworkService.getChannels() 
         .map(chList -> chList.getChannelInfoList()) 
         .flatMapIterable(list -> list) 
         .map(channelInfo -> channelInfo.getId()) 
         .toList() 
         .switchMap(channelIds -> NetworkService.getEpgList(channelIds)) 
         .subscribe(epgList -> Timber.d("%s", epgList)); 
関連する問題