通过名称获取可绘制图像

时间:2018-08-08 10:01:22

标签: java android android-drawable

我有一个模型,并且有一个特定的国家/地区标志:

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

尽管那行不通!

2 个答案:

答案 0 :(得分:0)

如果您确定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);

答案 1 :(得分:0)

您可以通过资源ID名称获得标志

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

您还可以检查 How to get a resource id with a known resource name?