【问题标题】:Android: sort spinner entries (feeded via XML string-array)Android:排序微调器条目(通过 XML 字符串数组提供)
【发布时间】:2017-06-18 13:38:38
【问题描述】:

我对 Android 很陌生,如果我可能没有使用正确的“术语”,请原谅我。

我一直在查看微调器,发现有两种添加条目的方法:

  1. 在我的活动的 .java 文件中,使用 StringAdapters 等
  2. 在 xml 中,使用 strings.xml 文件中定义的“android:entries”属性和字符串数组

我尝试了第一个选项并且能够对 Spinner 选项进行排序(我检索了字符串数组,将其放入 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 中对我的字符串进行排序?

【问题讨论】:

    标签: android sorting


    【解决方案1】:

    根据需要定义不同版本的 &lt;string-array&gt; 资源以影响排序顺序,用于需要新排序顺序的翻译。 IOW,如果你翻译 &lt;string&gt; 资源,你也“翻译”了 &lt;string-array&gt; 排序顺序。

    【讨论】:

    • 所以你的意思是在我的意大利语文件中:values-it\strings.xml,我需要用相同的名称重新定义 吗?哦,这似乎有点开销......如果我添加一个新的英文字符串并忘记将它添加到意大利版本怎么办?它会丢失还是要放在最后?
    • @PLB: “所以你的意思是在我的意大利文件中:values-it\strings.xml,我需要用相同的名称重新定义 吗?” -- 是的,但前提是排序顺序不同。列表越长,排序顺序越有可能随着翻译而改变。 “哦,这似乎有点开销”——是的。中间立场是使用android:entries,自己加载&lt;string-array&gt;getResources().getStringArray()getResources().getTextArray()),在Java 中对其进行排序,然后将其与ArrayAdapter 一起使用。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2011-11-10
    • 2017-05-26
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多