0

抱歉标题含糊不清,

下面是麻烦。我想使用 x 变量来遍历这个在名称中使用 1 -9 值的对象,(R.id.imageButtonx

for (int x = 1; x <10; x++)
    mm.add((Button) findViewById(R.id.imageButtonx));

//只是为了更深入一点。这是针对安卓的。

我从一个 Button 数组开始,然后我这样做了:

 main_Menu = new Button[] {
            (Button) findViewById(R.id.imageButton1),
            (Button) findViewById(R.id.imageButton2),
            (Button) findViewById(R.id.imageButton3),
            (Button) findViewById(R.id.imageButton4),
            (Button) findViewById(R.id.imageButton5),
            (Button) findViewById(R.id.imageButton6),
            (Button) findViewById(R.id.imageButton7),
            (Button) findViewById(R.id.imageButton8),
            (Button) findViewById(R.id.imageButton9)
        };

所以我可以做一个两行foreach循环来附加onbuttonclicklistener。

所以我想知道我是否可以将十行减少为两行。我搬到了一个 ArrayList。我曾希望在 x 变量周围使用方括号、括号、单引号或双引号之类的东西,但从答案之一来看,这似乎是不可能的。

4

4 回答 4

4

Java 不会用循环变量对 imageButtonx 中的“x”进行文本替换。

但是,您可以创建一个 imageButton ID 数组,并按索引引用每个 ID。

于 2013-05-25T14:40:15.800 回答
0

如果你的意思是安卓

Resources.getIdentifier()像这样使用

int id = getResources().getIdentifier("imageButton" + x, "id", null);

String s = getString(id);
于 2013-05-25T14:42:01.807 回答
0

根据您的确切需求,您可以使用单独的函数执行类似的操作,该函数根据参数返回变量之一。类似于以下内容:

public Button getButton(int index) {
    switch (index) {
        case 0: return button0;
        case 1: return button1;
        ...
        default: throw new ArgumentOutOfRangeException("index");
    }
}

然后你可以用类似的东西替换你的循环:

for (int x = 1; x < 10; x++)
    mm.add((Button) findViewById(R.id.getButton(x)));
于 2013-05-25T14:42:34.847 回答
0

怎么样

int[] imageButtons = { R.id.imageButton0, R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, ...};
for (int x = 0; x <9; x++)
mm.add((Button) findViewById(imageButtons[i]));

这应该适合您。:)

于 2013-05-25T14:44:23.133 回答