Имя переменной ImageView на основе цикла for - PullRequest
0 голосов
/ 17 января 2019

Это может быть простая проблема, которая была задана ранее, но я даже не знаю, что я буду искать, чтобы найти решение, поэтому я собираюсь задать ее здесь.

У меня есть 4 ImageView, которые имеют одно и то же имя, за исключением того, что в конце их имен их число увеличивается. Так, например:

    final ImageView circle1 = findViewById(R.id.p1circle1);
    final ImageView circle2 = findViewById(R.id.p1circle2);
    final ImageView circle3 = findViewById(R.id.p2circle1);
    final ImageView circle4 = findViewById(R.id.p2circle2);

И я хочу перебрать их, основываясь на переменной в цикле for. Это цикл for, который я создал

for(int i = 0; i < wins1; i++) {
    circle +i .setBackground(getResources().getDrawable(R.drawable.circle2);
}

Я пытаюсь переключаться между различными именами ImageView, добавляя увеличивающуюся переменную i в конец имени, но это, очевидно, неправильный способ сделать это.

Как я могу циклически перебирать имена этих переменных на основе переменной i?

1 Ответ

0 голосов
/ 18 января 2019

Java - это передача по значению , поэтому вы правы, говоря, что вы не можете просто добавить число к имени переменной и ожидать, что оно ссылается на другую переменную.

Решением этой проблемы является добавление ваших ImageViews в итеративную структуру данных, чаще всего ArrayList . Оттуда вы можете ссылаться на индексы списка массивов, используя метод get, а не напрямую вызывая переменные по их именам. (вам даже не нужно сохранять объект в переменную, если вам не нужно ссылаться на него по-другому)

Что-то вроде:

ArrayList<ImageView> circleList = new ArrayList<>();

//Add 4 new ImageViews to the list
for (int i = 0; i < 4; i++) {
    circleList.add(new ImageView());
}

for(int j = 0; j < wins1; j++) {
    circleList.get(j).setBackground(getResources().getDrawable(R.drawable.circle2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...