2012-11-24 6 views
5

私のアンドロイドアプリでは、View IDの配列を作る必要があります。どのようにビューIDをループするのですか?

この配列には81個の値が格納されるため、1個ずつ追加するのにはかなり時間がかかります。 これは、今どのように見えるかです:

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. 

は、これを行うの短い/より効率的な方法はありますか?

+0

非常に多くの方法を使用した場合のEEDは..あなたは 'のgetId()を'動的にあなたのコード内または**リソースから 'getIndentifier()'メソッドがある) 'SETIDを(使用'とすることができます**クラス。 – user370305

答えて

5

ありがたいことに、そこgetIndentifier()使用されています

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); 
} 
+1

私は前回ループしたときにgetPackageName()を呼び出すでしょう –

+0

確かに簡単です。 – Sam

+0

ありがとう、それは魅力のように働いた! –

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]); 
} 

変更されたフォームを共有すべきだと思う

いいえnそれ以外の整数文字列整形

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); 
}