2014-10-29 3 views
0

CountDownTimer을 실행 완료까지 for 루프 내에서 반복하고 싶습니다. 그러나 CountDownTimerfor 루프의 첫 번째 인덱스를 실행하며 다음 인덱스에 대해 다시 반복 할 수 없습니다.안드로이드는 foreach 루프가 끝날 때까지 CountDownTimer를 반복합니다.

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에는 2 개의 색인이 있습니다. 미리 감사드립니다.

+1

"실행이 완료 될 때까지"당신은 실제로 무엇을 의미합니까? – pskink

+0

루프가 완료 될 때까지 – user3384985

+1

기술적 인 어휘는 신비 스럽습니다 ... 아직도 당신이 무엇을 의미하는지 모르겠군요 ... – pskink

답변

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; 
} 
관련 문제