2016-08-18 4 views
0

J'ai un entier ArrayList « timerList » (par exemple, - 10, 20, 10) des valeurs que je veux alors utiliser pour un compte à rebours. Je cherche à faire défiler la liste et redémarrer la minuterie une fois qu'elle a terminé afin qu'elle utilise la prochaine valeur de la liste, donc elle décompte de 10 puis se réinitialise à 20 et se réinitialise à 10 jusqu'à toutes les valeurs dans la liste ont été utilisés.Android Compte à rebours - boucle par ArrayList redémarrer la minuterie avec liste de valeurs

La partie que je me bats avec est une boucle à travers les valeurs de la ArrayList. Je peux définir la valeur initiale de la ArrayList et je puis essayer d'utiliser pour définir la prochaine fois que la liste de tableau dans la OnFinish(). J'ai essayé de créer une variable int pour garder une trace de l'endroit où je suis dans la liste et d'y ajouter 1 à chaque fois, pour obtenir la valeur de liste suivante, mais une fois qu'elle a été décomptée une fois, elle reste juste à 0

des conseils ou des exemples de la façon dont je peux mettre en œuvre ce bien (peut-être même le regarder d'un autre point de vue si je ne suis pas aller dans la bonne direction) serait grandement apprécié!

Merci à l'avance Paul

Répondre

1

J'ai résolu ce problème en créant ensemble de minuteries compte à rebours

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

Vous êtes un cadeau du ciel absolu !! Merci beaucoup!!! –