android下实现英汉(汉英)排序的简单实现
1.引入frameworks/base/core/java/com /android/internal/util/HanziToPinyin.java文件到你的工程里面:
public class DataComparator implements Comparator<Object> { Collator collator = Collator.getInstance(java.util.Locale.CHINA); // 调入这个是解决中文排序问题 @Override public int compare(Object object1, Object object2) { HashMap<String, String> map1 = (HashMap<String, String>)object1; HashMap<String, String> map2 = (HashMap<String, String>)object2; String name1 = getFirstChar(map1.get("appName")); String name2 = getFirstChar(map2.get("appName")); String key1 = getPinYin(name1); String key2 = getPinYin(name2); return key1.compareTo(key2); } public DataComparator() { } private String getFirstChar(String str) { if (TextUtils.isEmpty(str)) { return ""; } String convert = ""; char word = str.charAt(0); convert += word; return convert.toUpperCase(); } private String getPinYin(String input) { ArrayList<Token> tokens = HanziToPinyin.getInstance().get(input); StringBuilder sb = new StringBuilder(); if (tokens != null && tokens.size() > 0) { for (Token token : tokens) { if (Token.PINYIN == token.type) { sb.append(token.target); } else { sb.append(token.source); } } } return sb.toString().toLowerCase(); }}