我有一个活动,该活动的变量position
来自另一个活动。我用Intent
处理此变量,如下所示。 (实际上position
是listView在另一个活动中的位置。)并且position
变量的值是0到200
我拿了Extra,然后将其分配给字符串,而不是将其解析为Integer。这些对我来说很正常,很容易工作。
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? 最佳答案
您不能直接访问它。您必须使用其名称来获取资源:
private Drawable getDrawableResourceByName(int name) {
String packageName = getPackageName();
int resId = getResources().getIdentifier("character_you_prefixed" + String.valueOf(name), "drawable", packageName);
return getResources().getDrawable(resId);
}
请注意,您的资源名称必须以字母开头,而不是数字开头,否则您的项目将无法编译。尝试在每个文件名的开头添加一个字符。