2013-07-25 41 views
1

類似的問題到Android: Set a random image using setImageResource,但我想我正在尋找一個不同的答案。Android:使用循環來填充圖像ID的數組

正如鏈接帖子中提到,這樣的:

int p = R.drawable.photo; 
image.setImageResource(p); 

顯示照片1,但這樣的事情:

String a = "R.drawable."; 
String b = "photo"; 
String c = a+b; 
int p = Integer.parseInt(c); 
image.setImageResource(p); 

不會。我有大量的圖片,以及陣列contining所有圖像的名字,所以我想填充數組是這樣的:

int imageArray[] = new int[number_of_images]; 
for (int i = 0; i < numImages; i++) 
imageArray[i] = ("R.drawable." + image_names[i]); 

但我得到一個運行時錯誤。有什麼辦法可以使這個循環工作?或者更好的方法來將圖像ID添加到數組中?

謝謝!

+0

嘗試先打印頁。它是否與R.drawable.photo_id相同? –

+0

是你的問題類似於此:http://stackoverflow.com/questions/6945678/android-storing-r-drawable-ids-in-xml-array? – bblincoe

+0

你能發佈錯誤嗎? – LokiSinclair

回答

1

你可以使用這種方法,它會根據字符串重新運行源代碼。第二和第三參數是可選的,但是如果你可以把它們放進去,我會的。

public int getIdentifier (String name, String defType, String defPackage) 

例子:

int p = getIdentifier("photo","drawable") 

或者,如果你正在IDS所有的時間,你可以創建這樣一個功能:

public int getDrawableId(Context context, String name){ 
    return context.getResources().getIdentifier(name,"drawable", context.getPackageName()); 
} 

你一定要檢查,看它是否返回0因爲這意味着它沒有找到它。

編輯

對於您的例子在那裏只是impliment上面的函數,並將其改成這樣:

int imageArray[] = new int[number_of_images]; 
for (int i = 0; i < numImages; i++) 
imageArray[i] = getDrawableId(getApplicationContext(),"R.drawable." + image_names[i]);