web-dev-qa-db-ja.com

HashMapを使用して文字列とintをマップする

国の名前を表示する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で特定の国名をクリックすると、対応する国コードをトーストする必要があります。

HashMapの実装がこれに最適な手法であることを理解しています。私の知る限り、HashMapはput()関数を使用して入力されます。

myMap.put("Country",28);

今私の質問は次のとおりです。

  1. String.xml配列を読み取り、それを使用してマップにデータを入力することは可能ですか?つまり、マップにアイテムを追加したいのですが、別の配列からアイテムを読み取ることで追加できる必要があります。これどうやってするの?

    私が尋ねる基本的な理由は、国の名前とコードを追加/削除/変更しやすい場所に保持したいからです。

  2. String-arraysはstrings.xmlに格納されます。同様の整数配列をどこに格納する必要がありますか?値フォルダー内ですが、特定のXMLファイルの下にありますか?

10
kiki
  1. 可能性の1つとして、文字列配列と整数配列の2つの異なる配列をXMLに格納し、プログラムでそれらを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. 任意の名前のファイルである可能性があります。 これを参照

27
Sergey Glotov