Изменение переменных по циклу

#java #android #loops #for-loop

Вопрос:

Допустим, у меня есть 150 фотографий. Мне нужно изменить их видимость или даже ресурс с помощью цикла, чтобы не делать этого для каждой фотографии, набрав текст.

Я попытался сделать это так:

 final ImageView randompic1 = (ImageView) findViewById(R.id.pic1);
final ImageView randompic2 = (ImageView) findViewById(R.id.pic2);
final ImageView randompic3 = (ImageView) findViewById(R.id.pic3);
final ImageView randompic4 = (ImageView) findViewById(R.id.pic4);
//(etc.)

    for (int j = 0; j <=150; j  ){
            randompic(j).setVisibility(View.INVISIBLE);
                             };
 

Поэтому я хотел бы изменить его в цикле следующим образом: randompic(j).setVisibility(Просмотр.НЕВИДИМЫЙ) для randompic1, randompic2, randompic3 и т.д. В каждом цикле. Java не принимает такой тип ввода, как JavaScript. Я не знаю, как найти хороший способ написать такой цикл.

Комментарии:

1. установка 150 различных значений true/false уже кажется неэффективной

Ответ №1:

Добавьте свои изображения в список и измените видимость каждого элемента в этом списке следующим образом:

 List<ImageView> randompics = new ArrayList<>();
randompics.add((ImageView) findViewById(R.id.pic1));
randompics.add((ImageView) findViewById(R.id.pic2));
randompics.add((ImageView) findViewById(R.id.pic3));
randompics.add((ImageView) findViewById(R.id.pic4));
//(etc.)

for (int j = 0; j <= randompics.size(); j  ) {
    randompics.get(j).setVisibility(View.INVISIBLE);
};
 

Вместо классического for цикла вы также можете использовать foreach вот так:

 randompics.foreach(pic -> pic.setVisibility(View.INVISIBLE));