2014-10-29 69 views
0

我想在for循環內重複CountDownTimer,直到它的執行完成。但CountDownTimer執行for循環的第一個索引,並且不能再次爲下一個索引重複。Android重複CountDownTimer直到結束foreach循環

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

「直到執行完成」你實際上是什麼意思? – pskink 2014-10-29 07:19:31

+0

直到循環執行完成 – user3384985 2014-10-29 07:21:56

+1

您的技術詞彙很神祕......仍然不知道您的意思是什麼...... – pskink 2014-10-29 07:24:27

回答

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; 
}