在for循环Java中更改变量名称

时间:2017-03-14 18:11:53

标签: java variables for-loop

我在主板上有一个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循环不能像写的那样工作。有没有办法实现这个?

1 个答案:

答案 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.
    }
}

虽然这是重复的,但它简单易读,并且在一个地方 - 即。应该很容易维护。