2015-07-19 208 views
0

我創建了一些實體,其中有方法isCorrect: Observable<Booledn>循環。我需要每個正確的最後一個布爾值的交集。我通過創建Observable數組來創建它,是否有更多幹淨的方法?rxjava可觀察構圖

API.getData(). 
.doOnNext(data -> 
{ 
    List<Observable<Boolean>> correctAll = new ArrayList<>(); 
    Observable.from(data).forEach(r -> { 
    Entity entity = new Entity(); 
    entity.set(r); 
    correctAll.add(entity.correct()); 
    }); 
    Observable.combineLatest(correctAll, args -> { 
    for (Boolean o : (Boolean[]) args) 
     if (!o) return false; 
         return true; 
    }) 
.subscribe(button::setEnabled); 
} 

回答

0

這個怎麼樣:

API.getData() 
    .flatMap(
     data-> Observable.from(data) 
       .flatMap(d -> { Entity entity = new Entity(); 
           entity.set(r); 
           return entity.correct().last();})) 
    .all(b -> b) 
    .subscribe(button::setEnabled);