2016-05-31 53 views
0

我有我從API獲得一個對象的情況。該對象包含ArrayList。這個ArrayList包含了我需要的數據作爲另一個列表的對象。如何從列表中獲取一些數據並在RxJava中使用該數據創建另一個列表

我有這樣的代碼,它工作得很好

Observable<SomePresentationModel> observable = apiService.getData() 
    .map(data -> { 
     List<Foo> foo = new ArrayList<>(); 
     for (Bar bar : data.getBars()) { 
     foo.addAll(bar.getSomething()); 
     } 
     return asPresentationModel(foo); 
    }); 

但它看起來很可怕,我敢肯定有一些方法來做到這一點更好,但我不知道怎麼的任何,想法?

回答

3

您可以使用flatMapIterable/toList從列表中發射項目,並在(見下文)後重建列表。請注意,toList只有在apiServiceService.getData()返回完成的Observable時纔有效。否則,它不會發出清單。

Observable<SomePresentationModel> observable = apiService.getData() 
       .flatMapIterable(data -> data.getBars()) 
       .map(elt -> elt.getSomething()) 
       .toList() 
       .map(foo -> asPresentationModel(foo)); 
相關問題