通过名称获取可绘制图像

Get drawable image by its name

我有一个模型,它有特定的国旗:

public int getCountryFlag() {
    return countryFlag;
}

public void setCountryFlag(int countryFlag) {
    this.countryFlag = countryFlag;
}

我正在从 API 获取数据。 API 有一个值国家代码,这可能是这样的:"country":"de","created_at":"2018-08-08 09:17:43","updated_at":"2018-08-08 09:17:43"

我将国旗命名为国家代码:

de
se
us
....

如何获取图像的确切 resourceID 以将其与模型相关联? 我正在使用 RecyclerView。

我试过类似的方法:

int resID = getResources().getIdentifier(object.getString("country"), "drawable",  getPackageName());
model.setCountryFlag(R.drawable.sy);

虽然那没有用!

如果您确定 api 字符串的格式,请执行以下操作:

String country = api.trim().split(",")[0].split(":")[1].replaceAll("\"", "");


String country = api.trim().substring(11, 13);

然后:

int resID = getResources().getIdentifier(country, "drawable",  getPackageName());
model.setCountryFlag(resID);

你可以通过Resource Id名称获取flag

int drawableResourceId = this.getResources().getIdentifier("de", "drawable", this.getPackageName());

你也可以查看 How to get a resource id with a known resource name?