1 回答
TA贡献1856条经验 获得超5个赞
我认为很适合这个问题。我不在IDE中,但我设想了一些东西,你:RxJava
为网格布局中的每个单独项目(例如 a )创建一个具有随机间隔的“计时器”,并让它在完成后发出该项目。
GridItemViewModel
将所有这些计时器组合到一个 .
List
同时运行所有计时器。
当每个单独的计时器完成时,它会发出其“项目”(即 )。使用它来隐藏 UI 中的相应项
ViewModel
当所有项目完成时,它将在您的整体中触发。当调用此任务时,您知道所有任务都已终止。
onComplete()
Observable
所以。。。
final List<Observable<Item>> tasks = gridItems()
.stream()
.map(item -> {
final int seconds = ThreadLocalRandom.current().next(0, 5);
return Observable.timer(seconds, TimeUnits.SECONDS).map(ignore -> item);
})
.collect(Collectors.toList());
Observable.merge(tasks)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(item -> {
//One item has completed. Take the "item" value
// and use it to update your UI.
}, t -> { /*No error handling*/}, () -> /*All items finished*/);
添加回答
举报