Метод для возврата массива - PullRequest
0 голосов
/ 29 марта 2012

В моем проекте Android, у меня есть обратный отсчет, который рандомизирует логическое значение для массива. Проблема в том, что каждый раз, когда он тикает, он всегда создает массив и цикл for. Может кто-нибудь помочь мне, как импортировать мои коды на отдельный класс и метод? Я просто хочу вызвать возвращенное значение массива в моем обратном отсчете, пока он зацикливается на отдельном классе. Пожалуйста, помогите мне, TIA! :)

Это мой обратный отсчет внутри моего onCreate ():

new CountDownTimer(300000, 1000) {
  public void onTick(long msUntilFinished) {
    txtCounter.setText("" + msUntilFinished/1000);
    ImageView[] pic= {img1, img2, img3, img4, img5};
    Random aRandom = new Random();

    for (int i=0;i<12;i++){
      arrays[i] = aRandom.nextBoolean();

      if(arrays[i]){
        pic[i].setImageResource(R.drawable.show);
        appear = true;
      } else {
        pic[i].setImageResource(R.drawable.hide);
        appear = false;
      }
    }
  } // end of onTick

  public void onFinish() {
    txtCounter.setText("done!");
  }
}.start();

1 Ответ

0 голосов
/ 29 марта 2012

Если вы не хотите, чтобы массив создавался каждый раз, когда он тикает, просто поместите инициализацию массива вне потока следующим образом:

for (int i=0;i<12;i++){ arrays[i] = aRandom.nextBoolean();}
new CountDownTimer(300000, 1000)
{
...
}.start();

Важно: "массивы" должны быть окончательными.Если вы не можете сделать это, тогда вы должны сделать:

for (int i=0;i<12;i++){ arrays[i] = aRandom.nextBoolean();}
final SomeClass[] finalArray = arrays;
new CountDownTimer(300000, 1000)
{
...
 if(finalArray[i]) ...
...
}.start();
...