2016-04-21 3 views
0

Так что я хочу, чтобы определенное действие выполнялось X раз, в зависимости от того, сколько раз пользователь хочет его. Выбор пользователя будет выбран из TextView строки, который устанавливается с этим кодом:Повторите определенное действие X раз в Android

homeScreenPlus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dodajInterval(); 
      homeScreenMinus.setEnabled(counter > 0); 
     } 
    }); 

    homeScreenMinus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      oduzmiInterval(); 
      homeScreenMinus.setEnabled(counter > 0); 
     } 
    }); 


} 

private void oduzmiInterval() { 
    counter--; 
    brojIntervala.setText(Integer.toString(counter)); 
} 

private void dodajInterval() { 
    counter++; 
    brojIntervala.setText(Integer.toString(counter)); 
} 

Те две кнопки-существу, что значение приращения или декремент TextView.

Действие Я хочу выполнить раз X это:

public void homeScreenStart(View view) { 
     linearniLayoutSetup.setVisibility(View.GONE); 

     new CountDownTimer(seekBarTimerDelay.getProgress() * 1000 + 100, 1000) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       countDownTimerTrci(); 

       karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
       textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_trci)); 
      } 
     }.start(); 
    } 


    private void countDownTimerTrci() { 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
     new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
       imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
       textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
       countDownTimerHodaj(); 
      } 
     }.start(); 
    } 

    private void countDownTimerHodaj(){ 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
     new CountDownTimer(seekBarIntervaliNiskogIntenziteta.getProgress() * 1000 + 100, 1000){ 

      @Override 
      public void onTick(long millisUntilFinished) { 
       updateTimer((int) millisUntilFinished/1000); 
      } 

      @Override 
      public void onFinish() { 
       textViewTimerVrijeme.setText("00:00"); 
       karticaTimera.setBackgroundColor(getResources().getColor(R.color.colorAccent)); 
       textViewTimerTrciHodajBlaBla.setText("Done!"); 
      } 
     }.start(); 
    } 

Так это сочетание 3 seekbars или таймеров, один работает за другим, а затем они должны работать столько раз, сколько пользователь выбирает.

Проблема в том, что я не знаю, как это установить, и мне нужен этот первый блок кода в таймерах, чтобы запускать только один раз, а те 2 метода под ним, чтобы запустить X раз.

Как я могу это сделать?

ответ

0

Если я не упустил что-то, вы не могли бы просто обернуть свой код в действие в цикле, который ссылается на текущий счетчик? Вам может потребоваться заблокировать ввод, чтобы пользователь не мог изменить счетчик (если вы этого не хотите) после того, как выполнение началось, но это должно быть так.

public void homeScreenStart(View view) { 
    linearniLayoutSetup.setVisibility(View.GONE); 

    CountDownTimer firstCountDown = new CountDownTimer(seekBarTimerDelay.getProgress() * 1000 + 100, 1000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      countDownTimerTrci(); 

      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_trci)); 
     } 
    } 

    CountDownTimer secondCountDown = new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
      imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
      countDownTimerHodaj(); 
     } 
    } 

    CountDownTimer thirdCountDown = new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000 + 100, 1000){ 

     @Override 
     public void onTick(long millisUntilFinished) { 
      updateTimer((int) millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      textViewTimerVrijeme.setText("00:00"); 
      karticaTimera.setBackgroundColor(getResources().getColor(R.color.kartica_hodaj)); 
      imageViewTimerSlika.setImageResource(R.drawable.ic_timer_niski_intenzitet); 
      textViewTimerTrciHodajBlaBla.setText(getResources().getString(R.string.timer_hodaj)); 
      countDownTimerHodaj(); 
     } 
    } 

    for (int i = 0; i < counter; i++) { 
     firstCountDown.start(); 
     toolbar.setBackgroundColor(getResources().getColor(R.color.kartica_trci)); 
     secondCountDown.start(); 
     thirdCountDown.start(); 
    } 
} 

Должно работать для вас

+0

Ну я не могу добавить цикл ниже все, что просто не будет работать – DaxHR

+0

я не действительно проверить содержимое ваших таймеров, просто сделать методы, чтобы они запускайте последовательно, и вам должно быть хорошо идти. В противном случае даже с вашей существующей методологией они будут перешагивать друг на друга. –

Смежные вопросы