2016-08-18 92 views
0

我有一個Integer ArrayList'timerList'(例如 - 10,20,10)的值,然後我想用於倒數計時器。Android倒數計時器 - 循環ArrayList重新啓動計時器與列表值

我正在尋找通過列表循環並重新啓動計時器,一旦它完成後,它使用列表中的下一個值,因此它從10開始倒數​​,然後重置爲20,然後重置爲10,直到所有值在列表中已被使用。

我正在努力的部分是通過循環ArrayList的值。我可以從ArrayList中設置初始值,然後嘗試使用onFinish()中的數組列表設置下一次。

我試着創建一個int變量來跟蹤我在列表中的位置,然後每次爲此添加1以獲取下一個列表值,但是一旦它倒計數一次,它只會停留在0

任何意見或例子,如何我可以正確實施這個(如果我不是正確的方向,甚至可以從不同的角度來看它)將不勝感激!

在此先感謝 保羅

回答

1

我通過創建倒計時

public class MainActivity extends AppCompatActivity { 
    CountDownTimer[] countDownTimers; 
    int Time; 
    TextView text; 
    ArrayList<Integer> timeList; 
    int i=0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     text= (TextView) findViewById(R.id.text); 
     timeList=new ArrayList<>(); 
     timeList.add(10*1000); 
     timeList.add(20*1000); 
     timeList.add(30*1000); 
     countDownTimers=new CountDownTimer[timeList.size()]; 
     for(int i=0;i<timeList.size();i++){ 
      final int finalI = i; 
      countDownTimers[i]=new CountDownTimer(timeList.get(finalI),100) { 
       @Override 
       public void onTick(long millisUntilFinished) { 
        long ms = millisUntilFinished; 
        String texts = String.format("%02d : %02d", 
          TimeUnit.MILLISECONDS.toMinutes(ms) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)), 
          TimeUnit.MILLISECONDS.toSeconds(ms) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(ms))); 
        text.setText(texts); 
       } 

       @Override 
       public void onFinish() { 
        if(!((finalI +1)>=timeList.size())){ 
         countDownTimers[finalI+1].start(); 
        } 
       } 
      }; 
     } 
     countDownTimers[0].start(); 

    } 

} 
+0

你真是喜從天降的陣列解決了這個問題!非常感謝!!! –