2017-06-18 68 views
0

我對Android非常陌生,因此如果我不使用正確的「術語」,請原諒我。Android:對微調條目進行排序(通過XML字符串數組進行排序)

我一直在看紡紗,並發現有兩種方法來添加條目:

    在我活動的java文件
  1. ,使用StringAdapters等
  2. 在XML ,使用「機器人:條目」屬性,並且在的strings.xml文件

我嘗試的第一個選項,並能夠微調器選項排序定義的字符串陣列(I檢索到的字符串數組,把它放到一個ArrayList中然後使用Collections.sort ...可能不是最簡單的解決方案),但我會對使用第二個選項感興趣,因爲我已經定義了所有的字符串,它似乎會讓我的代碼更輕......再加上,我想知道是否有oding我想要做的一種方式...... 我現在有的strings.xml是這樣的:

<resources> 
    <string name="competition_backstroke100">Backstroke 100</string> 
    <string name="competition_butterfly50">Butterfly 50</string> 
    <string name="competition_butterfly100">Butterfly 100</string> 

    <string-array name="competitions"> 
    <item>@string/competition_butterfly100</item> 
    <item>@string/competition_backstroke100</item> 
    <item>@string/competition_butterfly50</item> 
</string-array> 
</resources> 

,並把android:entries="@array/competitions"在我的xml微調框定義

現在我的問題:條目是按照他們在比賽中出現的相同順序添加的定義。我知道我可以手動對它們進行排序,但如果我的應用程序以不同的語言運行,則這不起作用(我猜測順序會保持不變)。 有什麼辦法可以直接在xml中排序我的字符串嗎?

回答

1

根據需要定義不同版本的<string-array>資源,以影響排序順序,以便需要新排序順序的翻譯。 IOW,如果你翻譯<string>資源,你也可以「翻譯」<string-array>排序順序。

+0

所以你的意思是在我的意大利文件中:values-it \ strings.xml,我需要重新定義具有相同名稱的?哦,這似乎有相當的開銷...如果我添加一個新的英文字符串,並忘記將其添加到意大利語版本?它會丟失還是會放在最後? – PLB

+1

@PLB:「所以你的意思是在我的意大利文件中:values-it \ strings.xml,我需要用相同的名稱重新定義?」 - 是的,但只有排序順序不同。列表越長,排序順序就越有可能隨着翻譯而改變。 「哦,這似乎有一些開銷」 - 是的。中間的基礎是*不使用'android:entries',自己加載'''('getResources()。getStringArray()'或'getResources()。getTextArray()'),將它排序Java,並通過'ArrayAdapter'使用它。 – CommonsWare

相關問題