我有一个活动,该活动的变量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.gif1.gif2.gif3.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);
}


请注意,您的资源名称必须以字母开头,而不是数字开头,否则您的项目将无法编译。尝试在每个文件名的开头添加一个字符。

10-07 19:03
查看更多