ImageButtons数组,从变量中分配R.view.id

Nic*_*ick 9 arrays android imagebutton

嘿.我的应用程序将使用64个ImageButtons(8x8)的数组,并且它们都已在我的XML布局中声明,其名称类似于one1,two5,eight8等.而不是在我的Java中单独声明它们我认为它可能很聪明地在一些for循环中声明它们.我有

ImageButton musicGrid[][] = new ImageButton [8][8];
Run Code Online (Sandbox Code Playgroud)

然后我有我的嵌套for循环,它基本上创建了一个代替R.id.whatever的字符串.它只是我循环中的最后一行,应该进行分配.它的正确语法是什么,或者甚至不可能做到(如果是这样,我将如何更好地处理64按钮网格?).谢谢!

for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            String btnID = "R.id.";
            switch(i) {
            case 0: btnID.concat("one"); break;
            case 1: btnID.concat("two"); break;
            case 2: btnID.concat("three"); break;
            case 3: btnID.concat("four"); break;
            case 4: btnID.concat("five"); break;
            case 5: btnID.concat("six"); break;
            case 6: btnID.concat("seven"); break;
            case 7: btnID.concat("eight"); break;
            }
            switch(j) {
            case 0: btnID.concat("1"); break;
            case 1: btnID.concat("2"); break;
            case 2: btnID.concat("3"); break;
            case 3: btnID.concat("4"); break;
            case 4: btnID.concat("5"); break;
            case 5: btnID.concat("6"); break;
            case 6: btnID.concat("7"); break;
            case 7: btnID.concat("8"); break;
            }
            musicGrid[i][j] = (ImageButton) findViewById(btnID);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Cri*_*ian 8

我喜欢AndrewKS' for,它更优雅.请记住,findViewById接收整数而不是字符串.所以你必须做以下事情:

int resID = getResources().getIdentifier(btnID, "drawable", "com.your.package");
musicGrid[i][j] = (ImageButton) findViewById(resID);
Run Code Online (Sandbox Code Playgroud)