简体   繁体   English

如何从 RxJava Flowable 更新 JavaFX 进度条?

[英]How can I update a JavaFX progress bar from RxJava Flowable?

I have the following reactive code:我有以下反应代码:

//JavaFX ProgressBar
ProgressBar progressBar = new ProgressBar(0);

Flowable
        .fromIterable(itemList)
        .parallel()
        .runOn(Schedulers.io())
        .map(item -> {
            Thread.sleep(1000); //imitate expensive computation
            return item.getCode();
         })
         .sequential()
         .observeOn(JavaFxScheduler.platform())
         .subscribe(result -> {
             System.out.println(result);
          });

I want to update the ProgressBar on every iteration of the flowable.我想在 Flowable 的每次迭代中更新 ProgressBar。

I thought of something like this:我想到了这样的事情:

int i= 0; //increment on every iteration
int total = itemList.size(); //total number if items in List
progressBar.setProgress((float)(i / total));

However, I could not figure out how to increment the variable i at the end of every iteration.但是,我无法弄清楚如何在每次迭代结束时增加变量i

Just increment i in the subscription只需在订阅中增加 i

AtomicInteger i = new AtomicInteger(0);
Flowable
    .fromIterable(itemList)
    .parallel()
    .runOn(Schedulers.io())
    .map(item -> {
        Thread.sleep(1000); //imitate expensive computation
        return item.getCode();
     })
     .sequential()
     .observeOn(JavaFxScheduler.platform())
     .subscribe(result -> {
         i.increment();
         progressBar.setProgress((float)(i.get()/itemList.size))
         System.out.println(result);
      });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM