2011-06-20 98 views
3

R.java文件中的靜態ID會自動生成,但是我可以給出自定義值以使我的工作更輕鬆。我有8個Imagebuttons我需要通過使用此代碼爲每個按鈕設置圖像。Android R.java文件

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

回答

1

編輯:肖恩·歐文的回答是比這更好的一個,更緊湊。

您可以將您的內部值映射到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); 
} 
+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); 
} 
+0

感謝好主意.... –

+0

我有一個疑問,是否有任何具體的原因你在for循環中使用了buttonID,你可以直接使用buttonIDs [i]。 –