Android R.java文件

时间:2011-06-20 12:06:06

标签: android

R.java文件中的静态ID是自动生成的,但我可以给出自定义值以使我的工作更轻松。我有8个图像按钮,我需要在每个按钮上使用此代码设置图像。

ImageButton button4 = (ImageButton)findViewById(R.id.iButton4);
setImagesOnButtons(myContactList.get(3).getPhotoId(),button4);

而不是这样做我可以将R.java中的按钮ID更改为1,2,3 ... 并将上面的代码放在像这样的for循环中

 for(i=0;i<8;i++)
 {
ImageButton button4 = (ImageButton)findViewById(i);
setImagesOnButtons(myContactList.get(3).getPhotoId(),i);
} 

2 个答案:

答案 0 :(得分:1)

你不能依赖编号,不。您不希望手动更改R.java。相反,做这样的事情:

int[] buttonIDs = {R.id.iButton1, R.id.iButton2, ...};
for (int i = 0; i < buttonIDs.length; i++) {
  int buttonID = buttonIDs[i];
  ImageButton button4 = (ImageButton) findViewById(buttonID);
  setImagesOnButtons(myContactList.get(3).getPhotoId(), i);
}

答案 1 :(得分:1)

编辑: Sean Owen的答案比这个更好,更紧凑。

您可以将内部值的映射保存到R.java中的唯一ID。你只需要在启动时执行一次:

static final Map<Integer,Integer> buttonMap = new HashMap<Integer,Integer>();

...
buttonMap.put(4, R.id.iButton4);
buttonMap.put(3, R.id.iButton3);
...

然后你可以这样循环:

for(i=0;i<8;i++)
{
    ImageButton button = (ImageButton)findViewById(buttonMap.get(i));
    setImagesOnButtons(myContactList.get(3).getPhotoId(),i);
}