2010-10-13 26 views
9

我有一個ListView顯示國家的名稱。 我已將strings.xml中的名稱存儲爲名爲country_names的字符串數組。使用HashMap來映射字符串和int

在填充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陣列,並用它來填充地圖?我的意思是,我想添加項目到地圖,但我必須能夠通過從另一個數組中讀取項目來完成。我怎樣才能做到這一點?

    我問的基本原因是因爲我想讓國家名稱和代碼保持在一個更容易添加/刪除/修改它們的地方。

  2. 字符串數組存儲在strings.xml中。類似的整數數組必須存儲在哪裏?在值文件夾中,但在任何特定的XML文件下?

回答

26
  1. As的可能性中的一種,則可以存儲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. 它可以與任何名稱的文件。

+0

嗨,謝爾蓋。我想知道如何以編程方式將值放入HashMap中。您可以在答案中分享代碼片段。至於2),謝謝,那就是我一直在尋找的。 – kiki 2010-10-13 10:21:13

+0

我編輯了我的答案。 – 2010-10-13 10:31:27

+0

嘿,非常感謝!我很困惑put()是否會這樣工作。 – kiki 2010-10-13 10:42:29

相關問題