2010-02-19 17 views
2

我有一個常見的使用案例,其中用戶從衆多項目中選擇一個項目(例如,在微調控制器或自動完成列表中),然後輸入數據。例如,假設用戶選擇一個國家。最終,我想要的數據是國家代碼,而不是國家名稱;但用戶將希望根據名稱而不是代碼進行選擇。換句話說,用戶將選擇「美國」,但我最終希望將其翻譯爲「美國」。是否有一個用於存儲靜態地圖的Android實用程序?

有很多國家。有沒有一種簡單的方法來設置Android中的映射以從名稱到代碼散列?我想了幾個解決方案,他們都不是在我的腦海中規中矩:

  1. 含有國家/代碼,我可以查詢數據庫。

  2. 將所有國家設置爲strings.xml中的字符串,然後按名稱檢索資源。

  3. 在代碼中創建一個巨大的Map並使用它。 (這是最不滿意的答案)。

任何人都有更聰明的解決方案嗎?

回答

1

我通常與兩個並聯的字符串數組去宣佈這樣在strings.xml

<string-array name="country_codes"> 
    <item>us</item> 
    <item>uk</item> 
    <!-- ... --> 
</string-array> 

然後做

String[] countryCodes = getResources().getStringArray(R.array.country_codes); 
+0

他需要一張地圖,而不是一個數組。你將如何將你的字符串數組中的所有項目映射到顯示值? – 2010-02-19 18:43:22

+0

這實際上是我迄今爲止最喜歡的答案;它在實用程序中彌補的內部一致性缺乏(因爲字符串數組可以很容易地添加到XML中的Spinners中)。儘管如此,仍然認爲可能會有更好的東西。 – 2010-02-19 19:02:02

0

如何將它作爲自定義XML文件存儲在/ res/xml中,當您的應用程序啓動並加載到Map中時讀取該文件?

一些東西:

<Map> 
    <item key="us" value="United States"> 
    ... 
</Map> 
+0

嗯,這是個好主意,但是我仍然需要編寫一個XML解析器來解決這個問題(這看起來像是過分的東西) imple)。也許如果我以簡單的名稱/值格式定位,那麼我可以將同一個解析器應用於多個文件並節省大量工作量。或者,也許我可以用JSON而不是XML。 – 2010-02-19 17:14:55

+0

是的,只需保持簡單,就像我添加到我的答案中一樣簡單,然後將其添加到您的答案中,以便您可以使用相同的解析器處理多件事情。 JSON或XML應該可以正常工作。我猜JSON會佔用更少的空間,如果文件變大,這可能會成爲問題。 – 2010-02-19 18:46:54

相關問題