5

对于我的 android 应用程序,我需要制作一个ViewID 数组。

该数组将包含 81 个值,因此将它们一一添加非常冗长。这是它现在的样子:

cells[0] = R.id.Square00;
cells[1] = R.id.Square01;
cells[2] = R.id.Square02;
cells[3] = R.id.Square03;
cells[4] = R.id.Square04;
cells[5] = R.id.Square05;
//All the way to 80.

有没有更短/更有效的方法来做到这一点?

4

2 回答 2

6

值得庆幸的是,有。使用getIdentifier()

Resources r = getResources();
String name = getPackageName();
int[] cells = new int[81];
for(int i = 0; i < 81; i++) {
    if(i < 10)
        cells[i] = r.getIdentifier("Squares0" + i, "id", name);
    else
        cells[i] = r.getIdentifier("Squares" + i, "id", name);
}
于 2012-11-24T20:58:18.463 回答
1

山姆的答案更好,但我认为我应该分享一个替代方案

int [] ids = new int [] {R.id.btn1, R.id.btn2, ...};
Button [] arrayButton = new Button[ids.length];

for(int i=0 ; i < arrayButton.length ; i++)
{
  arrayButton[i] = (Button) findViewById(ids[i]);
}

Sam Answer 的修改形式

不需要 if else 使用整数字符串格式化

Resources r = getResources();
String name = getPackageName();

int[] resIDs = new int[81];

for(int i = 0; i < 81; i++) 
{
        resIDs[i] = r.getIdentifier("Squares0" + String.format("%03d", i), "id", name);
}
于 2015-05-11T15:03:28.753 回答