需求:将一组数据按某一字段中文拼音排序
1、Test测试类:
PinyinComparator comparator = new PinyinComparator();
Collections.sort(strList, comparator);
其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。
2、PinyinComparator排序类:
public class PinyinComparator implements Comparator<Object> {
/**
* 比较两个字符串
*/
public int compare(Object o1, Object o2) {
String[] name1 = (String[]) o1;
String[] name2 = (String[]) o2;
String str1 = getPingYin(name1[0]);
String str2 = getPingYin(name2[0]);
int flag = str1.compareTo(str2);
return flag;
}
/**
* 将字符串中的中文转化为拼音,其他字符不变
*
* @param inputString
* @return
*/
public String getPingYin(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组
String output = "";
try {
for (int i = 0; i < input.length; i++) {
// \\u4E00是unicode编码,判断是不是中文
if (java.lang.Character.toString(input[i]).matches(
"[\\u4E00-\\u9FA5]+")) {
// 将汉语拼音的全拼存到temp数组
String[] temp = PinyinHelper.toHanyuPinyinStringArray(
input[i], format);
// 取拼音的第一个读音
output += temp[0];
}
// 大写字母转化成小写字母
else if (input[i] > 'A' && input[i] < 'Z') {
output += java.lang.Character.toString(input[i]);
output = output.toLowerCase();
}
output += java.lang.Character.toString(input[i]);
}
} catch (Exception e) {
Log.e("Exception", e.toString());
}
return output;
}
}
注:附件中仿微信联系人拼音分类列表为别人写的一个模仿微信联系的Demo,功能比较强大;另个附件是我写的测试程序,可以通过Test test = new Test();test.init();运行;
分享到:
相关推荐
在listview中,实现中文拼音排序的效果
实现按拼音排序... 按A到Z,可点击选择~.. 详情看效果~
主要为大家详细介绍了Android实现中文按拼音排序方法,很实用,感兴趣的小伙伴们可以参考一下
Android中文拼音排序以及中文笔划排序和英文排序,实现类似微信登录选择国家地区列表的功能
根据拼音进行排序的Android代码类,可以去我的博客查看具体的是现实方式。
android城市json数据 按拼音排列/按省市区排列 附带使用方法
ListView实现A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,获取通讯录联系人和头像
Android中英文混合排序,中文的拼音与英文字符串比较后排序
Android应用源码之带有拼音首字母排序的listview.zip
汉字转拼音很多地方要用到,比如联系人按姓氏首字母排序,拨号盘的模糊匹配,其他检索等都要用到汉字转拼音。 由于汉字在系统中的存储与它对应的拼音没有什么关系,目前汉字转拼音是通过一个汉字和拼音的对照库进行...
Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 demo
仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画 ,http://blog.csdn.net/u010648159/article/details/50556909这是博客地址
Android ListView城市列表,按a-z分组字母索引排序,http://blog.csdn.net/yalinfendou博客中有详细介绍……
实现带拼音的排序,就想通讯录里面的效果一样
城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,实现一般数据的A-Z排序功能
完美的解决了Android侧拉删除滑动冲突问题,并且加入了按拼音和字母排序功能,希望能帮助到大家,如果觉得好的话记得在评论区给点支持
仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。