我有一个活动,其变量position
来自另一个活动。我用Intent
处理这个变量,如下所示。 (实际上position
是listView从另一个活动的位置。)和position
变量的值是0到200
我接受了Extra,然后将其分配给一个字符串,而不是将其解析为整数。这对我来说很正常,也很容易。
Intent i = getIntent();
String position = i.getStringExtra("POSITION");
int position_to_int = Integer.parseInt(position);
但我的问题是关于资源。
我只想将图片放到我的LinearLayout 动态。我有一些国家/地区标志,其格式为0.gif
,1.gif
,2.gif
,3.gif
......
我的想法是为此目的使用position
变量的值。
但是当我尝试使用position_to_int
变量作为标志名时,Eclipse正常返回错误。因为R.drawble.XXX
值存储在R.java
ImageView imageView = new ImageView(this);
// setting image resource
imageView.setImageResource(R.drawable.position_to_int);
如何使用position_to_int
变量动态显示ImageView?
答案 0 :(得分:3)
您无法直接访问它。您必须使用其名称获取资源:
private Drawable getDrawableResourceByName(int name) {
String packageName = getPackageName();
int resId = getResources().getIdentifier("character_you_prefixed" + String.valueOf(name), "drawable", packageName);
return getResources().getDrawable(resId);
}
请注意,您的资源名称必须以字母开头,而不是数字,否则您的项目将无法编译。尝试在每个文件名的开头添加一个字符。