1

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

4

1 回答 1

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

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

于 2013-04-06T16:23:45.843 回答