这是我的问题:我正在编写一个替代联系人应用程序,指定可以使用大量不同的语言和字母表。使用我自己的语言瑞典语查询名称时,使用变音字符的名称以不合逻辑的方式排序给我,但我认为符合逻辑:
应该是/瑞典风格:A,B,C,......,Z,Å,Ä,Ö。
查询结果:A,Å,Ä,B,...,N,O,Ö,P,......
我认为这将是任何偏离拉丁字母的语言中的问题。我所做的所有测试都在模拟器上。我的开发小组正在对框架进行更改,因此也欢迎低级别的答案。
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_ID
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
mCursor = managedQuery(uri, projection, null, null, sortOrder);
更新:我们正在调查此曲目:Sort a String array,TBC ... 我还在Google Code上将其添加为问题。
答案 0 :(得分:1)
Gaah。它似乎是这样的:
在vanilla Java(SE-1.6)中运行以下代码会生成所需的输出:
String strings[] = {"Åke", "Äskil", "Otto", "Adam", "Örjan", "Palle", "Nisse"};
Locale locale = new Locale("sv", "SE");
Collator collator = java.text.Collator.getInstance(locale);
java.util.Arrays.sort(strings, collator);
但Android中的相同代码对我不起作用。
编辑:我在Android Google Code网站上发布了issue,评论者对此进行了评论。