我在主板上有一个6个骰子的网格,我想在Android Studio中作为imageButtons访问。每个图像按钮都有一个ID(button1是“ImageButton1”,而按钮2是“ImageButton2”等)。我想在一个for循环中访问这些按钮,而不是写六个半相同的语句,如下所示:
for (int i=0; i<6; i++) {
ImageButton c+i = (ImageButton)findViewById(R.id.imageButton+i);
}
imageButtton1
将存储在变量c1
中,等等。显然,这个for循环不能像写的那样工作。有没有办法实现这个?
答案 0 :(得分:2)
不幸的是,您无法动态地按名称访问Java变量。
但是你可以将它们作为一次性添加到列表中。
List<ImageButton> allButtons = new ArrayList<>() {{
add((ImageButton) findViewById(R.id.imageButton1));
add((ImageButton) findViewById(R.id.imageButton2));
add((ImageButton) findViewById(R.id.imageButton3));
// etc.
}};
这样您就可以通过轻松迭代它们来简化其余代码。
for (ImageButton button : allButtons) {
...
}
或者,您可以创建一个按索引返回图像按钮的方法:
private ImageButton imageButton(int index) {
switch (index) {
case 1: return (ImageButton) findViewById(R.id.imageButton1);
case 2: return (ImageButton) findViewById(R.id.imageButton2);
case 3: return (ImageButton) findViewById(R.id.imageButton3);
//etc.
}
}
虽然这是重复的,但它简单易读,并且在一个地方 - 即。应该很容易维护。