2016-08-18 93 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

你真是喜从天降的阵列解决了这个问题!非常感谢!!! –