2012-05-16 2 views
1

Я хочу попытаться поместить это в цикл, но я не могу заставить Rid.imageView соответствовать. Я попытался: string id = "R.id.imageView" + i внутри цикла for, но он не соответствует параметрам findViewById. Есть идеи? очень ценю любую помощь.FindViewById Loop

buttons[0] = (ImageView) this.findViewById(R.id.imageView1); 
    buttons[1] = (ImageView) this.findViewById(R.id.imageView2); 
    buttons[2] = (ImageView) this.findViewById(R.id.imageView3); 
    buttons[3] = (ImageView) this.findViewById(R.id.imageView4); 
    buttons[4] = (ImageView) this.findViewById(R.id.imageView5); 
    buttons[5] = (ImageView) this.findViewById(R.id.imageView6); 
    buttons[6] = (ImageView) this.findViewById(R.id.imageView7); 
    buttons[7] = (ImageView) this.findViewById(R.id.imageView8); 
    buttons[8] = (ImageView) this.findViewById(R.id.imageView9); 
    buttons[9] = (ImageView) this.findViewById(R.id.imageView10); 
    buttons[10] = (ImageView) this.findViewById(R.id.imageView11); 
    buttons[11] = (ImageView) this.findViewById(R.id.imageView12); 

ответ

3

Возьмем один массив Integer для R.id.imageView1 ...... 12 и передать его значение Как

private Integer[] Imgid = {R.id.imageview1,....,12 }; 

и использование массива

3

Используйте getIdentifier() метод:

Resources res = getResources(); //if you are in an activity 
for (int i = 1; i < 13; i++) { 
    String idName = "imageView" + i; 
    buttons[i] = (ImageView) findViewById(res.getIdentifier(idName, "id, getPackageName())); 
} 
1

То же, что и выше, только опечатка исправлена. Кажется лучше, чем «Лучший ответ», потому что вам не нужно определять какой-либо массив, если он вам не нужен.

Resources res = getResources(); //if you are in an activity 
for (int i = 1; i < 13; i++) { 
    String idName = "imageView" + i; 
    imageViews[i] = (ImageView) findViewById(res.getIdentifier(idName, "id", getPackageName())); 
} 
Смежные вопросы