我有一个国家/地区数组(字符串) - (来自网络服务)以及作为其标志的Drawables的相应列表 - (在drawables文件夹中)
Drawables标有" cape_verde"或者"加拿大"但是,当这些名字从网络服务中传下来时,它们会以“佛得角”和“#34;或者"加拿大"。
当我调用webservice时,我会进行小写转换并替换一些字符,如下面的代码所示:
String lowerCaseName = countryNameInArray.countryName.toLowerCase();
String replacedCountryName = lowerCaseName.replaceAll(" ", "_");
我的想法是我可以设置一些
R.drawable.replacedCountryName
但很明显它不能使用Strings,因为它需要一个int。
修改
public View getCustomView(int position, View convertView, ViewGroup parent) {
countries = res.getStringArray(R.array.countries);
/********** Inflate spinner_rows.xml file for each row ( Defined below ) ************/
View row = inflater.inflate(R.layout.country_drop_down_rows, parent, false);
/***** Get each Model object from Arraylist ********/
tempValues = null;
tempValues = (countryDropDownItem) data.get(position);
TextView label = (TextView) row.findViewById(R.id.spinner_country_textview);
ImageView country = (ImageView) row.findViewById(R.id.spinner_county_flag_imageview);
if (position == 0) {
// Default selected Spinner item
label.setText("South Africa"); //get the country text
country.setImageResource(R.drawable.south_africa);
} else {
String lowerCaseName = countries.toString().toLowerCase();
String replacedCountryName = lowerCaseName.replaceAll(" ", "_");
// Set values for spinner each row
label.setText(tempValues.countryName); //get the country text
country.setImageResource(res.getIdentifier(replacedCountryName, "drawable", "com.app.app" ));
}
return row;
}
有没有人知道如何解决这个问题?
由于
答案 0 :(得分:1)
试试这个:
ImageView iw= (ImageView)findViewById(R.id.imageView1);
int resID = getResources().getIdentifier(drawableName, "drawable", getPackageName());
iw.setImageResource(resID);
drawableName是您的文件/图像名称,尝试存储在/src/asset/image.png
答案 1 :(得分:1)
getResources().getIdentifier(
"imagename", "drawable", "com.package.application")