2011-04-22 75 views
5
iv.setImageResource(R.drawable.icon); 

此行變量是我安卓:通過對R.drawable.variableValue

我可以通過一個變量值,而不是圖標 工作好樣的,如果我有10個繪製的圖像,我想決定在運行時要顯示的圖像 我可以通過一個變量傳遞的價值,像

String variableValue = imageName; 
    iv.setImageResource(R.drawable.variableValue); 

回答

4

解決它你可以使用一個數組來定義可繪:

int[] images = new int[2]; 
images[0] = R.drawables.image1; 
images[1] = R.drawables.image2; 

然後可以使用此陣列在運行時設置一個圖像:

lv.setImageResource(images[i]); 

哪裏是在這種情況下是0至點到第一圖像或1至點到所述陣列的所述第二圖像。

+0

工作就像魅力......要命:) ... 感謝您使我們的生活更輕鬆,而帶來更多的併發症弄成這已經是複雜的(ATLEAST對我來說)。 – 2011-04-24 04:04:52

+0

對我來說,它只適用於R.drawables而不是R.drawables – 2017-10-15 00:48:44

0

不,它不會那樣工作。

在您的第一線iconstatic final class R.drawable的產生static final構件,從而試圖串連起來就像是一個String會給你一個編譯器錯誤。

但是你可以嘗試使用

iv.setImageURI(uri); 

其中uri是URI到你的形象,所以你可以在這裏使用的字符串值。
此外,根據api文檔,使用setImageBitmap將是更好的解決方案:您應該根據您的資源來考慮它。

APIDocs:

public void setImageURI (Uri uri) 

自:API等級1

設置此的ImageView來 指定的URI的內容。

這會在UI線程上執行位圖讀取和解碼 ,這可能會導致 延遲打嗝。如果這是一個問題, 請考慮使用 setImageDrawable(Drawable)或 setImageBitmap(Bitmap)和 來代替BitmapFactory。

參數
uri圖像)的URI

16

Resources.getIdentifier(能解決你的問題。

String variableValue = imageName; 
iv.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName())); 
+0

謝謝你爲我工作。 – 2014-06-22 05:36:51