我有一个显示国家名称的 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);
现在我还有每个国家的国家代码。当在 ListView 上单击特定国家/地区名称时,我需要 Toast 相应的国家/地区代码。
我知道实现 HashMap 是最好的技术。据我所知,HashMap 是使用 put() 函数填充的。
myMap.put("Country",28);
现在我的问题是:
是否可以读取 string.xml 数组并使用它来填充 map ?我的意思是,我想向 Map 添加项目,但我必须能够通过从另一个数组读取项目来实现。我该怎么做?
我问的基本原因是因为我想将国家名称和代码保存在更容易添加/删除/修改它们的地方。
字符串数组存储在 strings.xml 中。类似的整数数组必须存储在哪里?在值文件夹中,但在任何特定的 XML 文件下?
最佳答案
作为一种可能性,您可以在 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
关于android - 使用 HashMap 映射 String 和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922406/