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中? 对不起我的英语水平不好:)
答案 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);