基于for循环的可变ImageView名称

时间:2019-01-17 20:05:57

标签: java for-loop

这可能是一个以前已经问过的简单问题,但是我什至不知道要寻找什么才能找到解决方案,所以我将在这里提出。

我有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);
}

我正在尝试通过在名称的末尾添加递增的i变量来遍历不同的ImageView名称,但这显然是错误的处理方法。

如何基于变量i在这些变量名中循环显示?

1 个答案:

答案 0 :(得分:2)

Java是pass by value,因此您可以正确地说您不能只是在变量名中添加数字并期望它引用其他变量。

此问题的解决方案是将ImageView添加到可迭代的数据结构中,最常见的是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);
}