2016-04-29 14 views
1

市場調査のためのアンドロイドアプリケーションを開発中です。登録ページには、すべての国を一覧表示するスピナーがあり、機能を使用しています。Arrays.sort()アルファベット順に並べ替えます。私はタブレット言語を「英語」にし、アルファベット順のソートリストを取得しました。すべての言語でアルファベット順に国を並べ替えます。

しかし、タブレット言語をポルトガル語に変更した場合、表示されるリストはソートされません(のスクリーンショットを参照してください)。言語には英語とは異なるアルファベットがいくつかあります。私はjavaが文字のASCIIコードに基づいてソートを実行することを知っています。しかし、使用されている言語に関係なく、ソートされた結果を得る他の方法があります。

enter image description here

+2

あなたのリストは確かに言語に基づいてソートされているようです。 Áの文字コードがZの文字コードよりも大きいことだけです。この解決方法を検討するとよいでしょう:http://stackoverflow.com/a/12889868/578759 – Hok

答えて

3

私はあなたが(あなたはそれがその後、正常に動作することを述べてきたことから、英語のような)Localeを選択された特定とCollatorを探していると思います。私はあなたがそれらの文字が含まれていない言語をのロケールに文字をソートするときに、いくつかの一見恣意性を期待する必要があると思う

Collections.sort(yourArray, Collator.getInstance(new Locale("en", "US"))); 
0

ですから、このようなものを使用することができます。照合では順序は指定できますが、希望する規則に従わない場合があります。たとえば、米国英語では、ñとณの間の正しい順序は何ですか?

1つのオプションは、各言語で、その言語の文字のみを使用して並べ替える別のリストを持つことです。 (それがうまくいかない場合は、それまで遠くに行ってしまえば、各リストに一定の順序で並べ替えることができます)

関連する問題