Android重复CountDownTimer直到结束foreach循环

时间:2014-10-29 07:16:44

标签: java android timer foreach countdowntimer

我想在CountDownTimer循环中重复for,直到执行完成。但是CountDownTimer执行for循环的第一个索引,它不能再次重复下一个索引。

for (final Question questionData : questionSet) {
            setUI(questionData);
            startTimer();
}
private void setUI(Question questionData) {
    question.setText(questionData.getQuestion());
    ch1.setText(questionData.getC1());
    ch2.setText(questionData.getC2());
    ch3.setText(questionData.getC3());

}

private void startTimer(){
    int interval = 10000;
    countDownTimer = new CountDownTimer(interval, 1000) {

        public void onTick(long millisUntilFinished) {
            time.setText("seconds remaining: "
                    + millisUntilFinished / 1000);
        }

        public void onFinish() {
            time.setText("done!");
            countDownTimer.cancel();
        }
    }.start();

}

此处questionSet有两个索引。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

终于找到了解决方案。

for (final Question questionData : questionSet) {
            tempQuestionSet.add(questionData);
            setUI(questionData);
            startTimer();
            break;
}
private void setUI(Question questionData) {
    question.setText(questionData.getQuestion());
    ch1.setText(questionData.getC1());
    ch2.setText(questionData.getC2());
    ch3.setText(questionData.getC3());

}

private void startTimer(){
    int interval = 10000;
    countDownTimer = new CountDownTimer(interval, 1000) {

        public void onTick(long millisUntilFinished) {
            time.setText("seconds remaining: "
                    + millisUntilFinished / 1000);
        }

        public void onFinish() {
            time.setText("done!");
            final Question question = getQuestionSet();
            if(question == null){
                countDownTimer.cancel();
            }else{
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        setUI(question);
                    }
                });
                countDownTimer.start();
            }

        }
    }.start();

}

private Question getQuestionSet(){
    Question newQuestion = null;
    for (final Question questionData : questionSet) {
        if(tempQuestionSet.contains(questionData)){         
        }
        else{
            tempQuestionSet.add(questionData);
            return questionData;
        }
    }
    return newQuestion;
}