我如何一一显示几个进度条?

时间:2018-08-25 11:31:15

标签: android android-progressbar timertask

我必须做这样的事情:

  • 在数组列表的几条记录之间进行迭代。
  • 显示进度对话框以获取一条记录
  • 移至下一条记录
  • 等等。

在for循环内显示进度对话框时,我遇到了问题。

我尝试了TimerTask的许多变体并运行。这是我的示例演示应用程序的最新代码。

//In function of showing progress
for (int i = 0; i < myInfo.size() ; i++){
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new ProgressTask(timer), 1000, 1000);
}

//Here is the ProgressTask
public class ProgressTask extends TimerTask {
    Timer timer;
    public ProgressTask (Timer timer){
        this.timer = timer;
    }

    @Override
    public void run() {
        progressStatus = progressStatus + 10;
        progressBar.setProgress(progressStatus);
        if (progressStatus == 100) {
            timer.cancel();
        }
    }
}

结果是:我只看到进度对话框的第一条记录。尽管它为所有记录执行for循环,但在计划任务或运行线程或计时器时我还是犯了一些错误。有人可以帮我解决代码中的错误吗?

编辑:

Here是整个活动的代码,如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

您的进度任务将同时执行,因此您只会获得一个进度。因此,请调整您的延迟时间以一一执行。

尝试一下

 for (int i = 0; i < 10 ; i++){
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new ProgressTask(timer),  i * 1000, 1000);
    }

 public class ProgressTask extends TimerTask {
    Timer timer;
    public ProgressTask (Timer timer){
        this.timer = timer;
    }

    @Override
    public void run() {

        progressStatus = progressStatus + 10;
        progressBar.setProgress(progressStatus);
        timer.cancel(); //Cancel timer all time bcoz you create new timer everytime.

    }

}