2016-08-18 3 views
0

Ich habe eine Integer ArrayList 'timerList' (zB - 10, 20, 10) von Werten, die ich dann für einen Countdown-Timer verwenden möchte.Android Countdown-Timer - Schleife durch ArrayList Neustart Timer mit Listenwert

Ich bin auf der Suche nach einer Schleife durch die Liste und den Timer neu starten, sobald es beendet, so dass es den nächsten Wert aus der Liste, so Countdown von 10 und dann auf 20 zurückgesetzt und dann auf 10 bis alle Werte zurückgesetzt in der Liste wurden verwendet.

Der Teil, mit dem ich kämpfe, ist das Durchlaufen der Werte der ArrayList. Ich kann den Anfangswert von der ArrayList setzen und ich versuche dann, die Array-Liste in der onFinish() zu verwenden, um das nächste Mal festzulegen.

Ich habe versucht, eine int-Variable zu erstellen, um zu verfolgen, wo über Ich bin in der Liste und dann 1 jedes Mal hinzufügen, um den nächsten Wert der Liste, aber sobald es einmal heruntergezählt hat, bleibt es einfach bei 0

Irgendwelche Ratschläge oder Beispiele, wie ich das richtig umsetzen kann (vielleicht sogar aus einer anderen Perspektive, wenn ich nicht in die richtige Richtung gehe) würde sehr geschätzt werden!

Vielen Dank im Voraus Paul

Antwort

1

löste ich dieses Problem durch

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

Sie sind ein absolutes Geschenk des Himmels Reihe von Countdown-Timer zu schaffen !! Ich danke dir sehr!!! –