iv.setImageResource(R.drawable.icon);
这条线对我有用
我可以传递变量值而不是图标 就好像我有10个图像在drawable中,我想决定运行时显示哪个图像 我可以通过变量传递值,并像
一样工作 String variableValue = imageName;
iv.setImageResource(R.drawable.variableValue);
答案 0 :(得分:17)
Resources.getIdentifier()可以解决您的问题。
String variableValue = imageName;
iv.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName()));
答案 1 :(得分:4)
您可以使用数组来定义drawable:
int[] images = new int[2];
images[0] = R.drawables.image1;
images[1] = R.drawables.image2;
然后您可以使用此数组在运行时设置图像:
lv.setImageResource(images[i]);
在这种情况下,0表示第一个图像,或者1表示数组的第二个图像。
答案 2 :(得分:0)
不,它不会那样工作。
在第一行中icon
是static final
生成的static final class R.drawable
成员,因此尝试将其连接起来就像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