9

ちょっと、そこ。私のアプリは64個のImageButton(8x8)の配列を使用する予定であり、それらはすべてXMLレイアウトでone1、two5、eight8などの名前ですでに宣言されています。Javaでこれらを個別に宣言するのではなく、私はそれを考えました。一部のforループでそれらすべてを宣言するのが賢明かもしれません。私は持っています

ImageButton musicGrid[][] = new ImageButton [8][8];

次に、R.id.whateverの代わりになる文字列を基本的に作成するネストされたforループがあります。割り当てを行うのは、ループの最後の行だけです。そのための正しい構文は何でしょうか、またはこれを行うことさえ不可能ですか(もしそうなら、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);
        }
    }
4

3 に答える 3

8

AndrewKSが好きですfor。もっとエレガントです。findViewById文字列ではなく整数を受け取ることを覚えておいてください。したがって、次のようなことを行う必要があります。

int resID = getResources().getIdentifier(btnID, "drawable", "com.your.package");
musicGrid[i][j] = (ImageButton) findViewById(resID);
于 2010-10-14T20:05:15.433 に答える
2

xmlでボタンをまだハードコーディングしていない場合は、ViewInflaterを使用してプログラムでコーディングすると言っていたでしょうが、これを行ったので、次のコードを使用します。

String[] number_as_word = ["one", "two", "three", "four", "five", "six", "seven", "eight"];
for (int i = 0; i < 8; i++) {
  for (int j = 0; j < 8; j++) {
    musicGrid[i][j] = (ImageButton) findViewById("R.id." + number_as_word[i] + (j+1));
  }
}
于 2010-10-14T20:02:49.133 に答える
0

個別のImageButtonとして特別に行う必要がない限り、GridViewを使用する方がよい場合があります。

これは、アダプターを使用してGridViewで画像を使用するチュートリアルです

于 2010-10-14T20:19:47.417 に答える