2011-04-22 53 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