如何在代码中没有 "direct description" 的情况下动态更改 mipmap 文件夹中的图像?

How to change images from mipmap folder dynamically without "direct description" in code?

我在 mipmap 文件夹中有很多不同大小的图像(超过 200 张),我需要在 ImageView 中动态设置图像...但是如何在我的代码中没有 "direct description" 的情况下执行此操作那个 R.mipmap.*int 文件? mipmap 文件夹中有标志图像,我的对象有它自己的字符串字段 "flagCountry",它由两个字符组成。 mipmap 文件夹中的标志名称由相同的字符组成。所以,这是一个麻烦 - 如何从 flagCountry String 变量动态设置 setImageResource(R.mipmap.XXX)? 我在考虑 "reflection" 中的那个决定,但这怎么可能? )) 请帮忙

您可以使用 Resources.getIdentifier() 查找给定名称的资源的整数 ID。这就像 android 资源的反射。

int id = getResources().getIdentifier("XXX", "drawable", getPackageName());

或者类似的东西。这假设代码在 activity 中。然后你可以用那个id调用setImageResource(id)

正如 Doug 所说,您可以使用 Resources.getIdentifier() 来查找给定名称的资源的整数 ID。但是你说你想要来自 mipmap 的资源。所以做一个简单的改变。将单词 "drawable" 更改为 "mipmap",您将从 mipmap 获取图像。修改后的代码:

int id = getBaseContext()getResources().getIdentifier("XXX", "mipmap", getBaseContext().getPackageName());
image.setImageResource(id);