setImageResource

时间:2012-04-18 20:47:48

标签: java android imageview

int i = 1;
String IMG = "pic";
IMG = IMG + Integer.toString(i);
i = i + 1;   

imageview1.setImageResource(R.drawable.IMG);

R.drawable.IMG其中IMG是变量。

这是错误的。什么会正确的方式?我想将图像视图从pic1更改为picN。


int [] images = new int [] {R.drawable.pic1,R.drawable.pic2,R.drawable.pic3};

这样更好,但如何将矢量元素插入到imageview中? 对不起我的英语水平不好:)

3 个答案:

答案 0 :(得分:4)

这可以通过使用

来完成
int resourceId = getResources().getIdentifier("pic" + i, "drawable", getPackageName());

imageview1.setImageResource(resourceId);

事实证明这是相当缓慢的。一个更好的选择可能是保留一个可绘制ID的数组并循环遍历..

int[] drawables = new int[] { R.drawable.pic1, R.drawable.pic2 };

答案 1 :(得分:0)

标识应用中资源的标识符不是一系列序列号。创建一个您添加的图像数组,例如

int[] images = new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3};

并相应地增加索引?

答案 2 :(得分:0)

与@dymmeh给出的解决方案类似 你也可以用Java Reflection做到这一点,但我怀疑它也可能很慢。

int resId = R.drawable.getClass().getField("pic" + i).getInt(R.drawable);