2015-07-19 101 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);