创建动态R.drawable源和ImageView

时间:2013-04-06 16:20:16

标签: android android-imageview dynamically-generated android-drawable

我有一个活动,其变量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.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?

1 个答案:

答案 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);
}

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