1

与 Android类似的问题:使用 setImageResource 设置随机图像,但我想我正在寻找不同的答案。

如链接帖子中所述,这是:

int p = R.drawable.photo;
image.setImageResource(p);

显示 photo1,但类似这样:

String a = "R.drawable.";
String b = "photo";
String c = a+b;
int p = Integer.parseInt(c);
image.setImageResource(p);

将不会。我有很多图像,以及一个包含所有图像名称的数组,所以我想填充一个数组,如下所示:

int imageArray[] = new int[number_of_images];
for (int i = 0; i < numImages; i++)
imageArray[i] = ("R.drawable." + image_names[i]);

但我得到一个运行时错误。有没有办法让这个循环工作?还是将图像 ID 提示到数组中的更好方法?

谢谢!

4

1 回答 1

1

您可以使用此方法,它将根据字符串重新运行源 ID。第二个和第三个参数是可选的,但如果你能把它们放进去,我会的。

public int getIdentifier (String name, String defType, String defPackage) 

例子:

int p = getIdentifier("photo","drawable")

或者,如果您一直在获取 id,您可以创建如下函数:

public int getDrawableId(Context context, String name){
    return context.getResources().getIdentifier(name,"drawable", context.getPackageName());
}

您只需要检查它是否返回 0,因为这意味着它没有找到它。

编辑

对于您上面的示例,只需执行上面的函数并将其更改为:

int imageArray[] = new int[number_of_images];
for (int i = 0; i < numImages; i++)
imageArray[i] = getDrawableId(getApplicationContext(),"R.drawable." + image_names[i]);
于 2013-07-25T19:54:47.873 回答