我有一个显示国家/地区名称的ListView。 我已将strings.xml中的名称存储为名为 country_names 的字符串数组。
在填充ListView时,我使用了一个从strings.xml中读取的ArrayAdapter:
String[] countryNames = getResources().getStringArray(R.array.country_names);
ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(this, R.layout.checked_list, countryNames);
myList.setAdapter(countryAdapter);
现在,每个国家/地区都有一个CountryCode。当在ListView上单击特定的国家/地区名称时,我需要Toast相应的CountryCode。
我知道实现HashMap是最好的技术。据我所知,HashMap使用put()函数填充。
myMap.put("Country",28);
现在我的问题是:
是否可以读取string.xml数组并使用它来填充Map?我的意思是,我想在Map中添加项目,但我必须能够通过读取另一个数组中的项目来实现。我怎么能这样做?
我问的基本原因是因为我希望将国家/地区名称和代码保存在更容易添加/删除/修改它们的位置。
字符串数组存储在strings.xml中。必须存储类似的整数数组?在values文件夹中,但在任何特定的XML文件下?
答案 0 :(得分:27)
作为其中一种可能性,您可以在XML中存储2个不同的数组:字符串数组和整数数组,然后以编程方式将它们放在HashMap
中。
数组的定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries_names">
<item>USA</item>
<item>Russia</item>
</string-array>
<integer-array name="countries_codes">
<item>1</item>
<item>7</item>
</integer-array>
</resources>
代码:
String[] countriesNames = getResources().getStringArray(R.array.countries_names);
int[] countriesCodes = getResources().getIntArray(R.array.countries_codes);
HashMap<String, Integer> myMap = new HashMap<String, Integer>();
for (int i = 0; i < countriesNames.length; i++) {
myMap.put(countriesNames[i], countriesCodes[i]);
}
它可能是一个带有任何名称的文件。 See this