使用HashMap映射String和int

时间:2010-10-13 09:47:09

标签: android string hashmap

我有一个显示国家/地区名称的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);

现在我的问题是:

  1. 是否可以读取string.xml数组并使用它来填充Map?我的意思是,我想在Map中添加项目,但我必须能够通过读取另一个数组中的项目来实现。我怎么能这样做?

    我问的基本原因是因为我希望将国家/地区名称和代码保存在更容易添加/删除/修改它们的位置。

  2. 字符串数组存储在strings.xml中。必须存储类似的整数数组?在values文件夹中,但在任何特定的XML文件下?

1 个答案:

答案 0 :(得分:27)

  1. 作为其中一种可能性,您可以在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]);
    }
    
  2. 它可能是一个带有任何名称的文件。 See this