android - 使用 HashMap 映射 String 和 int

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

现在我还有每个国家的国家代码。当在 ListView 上单击特定国家/地区名称时,我需要 Toast 相应的国家/地区代码。

我知道实现 HashMap 是最好的技术。据我所知,HashMap 是使用 put() 函数填充的。

myMap.put("Country",28);

现在我的问题是:

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

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

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

最佳答案

  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

关于android - 使用 HashMap 映射 String 和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922406/

相关文章:

Android ListView onTouchEvent 并不总是给出 ACTION_DOWN

c++ - char指针的多维数组

javascript - 从 Textarea 中保留和删除特定字符串

java - 如何在 JSP 中突出显示字符串中的特定单词

java - 为什么检查 HashMap 是否具有特定值需要很长时间才能在 for 循环中执行?

IntelliJ 14 中的 Android/Scala 项目编译,但在启动时崩溃,找不到 Scala 类

Android GridView 项目调整大小

java - HashMap 调整其表的大小

java - 如何获取 URL 以便能够将其传递给 Activity

android - 通过 adb 禁用和启用 android 触摸屏