第一步:添加

implementation 'com.github.open-android:pinyin4j:2.5.0'

第二步:拼音工具类

public class Pinyin4jUtil {public static StringBuilder sb=new StringBuilder();/*** 获取汉字字符串的各个字首字母* 中国:zg* @param chines* @return*/public static  String getPinYinHeadChar(String chines){sb.setLength(0);char[] chars=chines.toCharArray();HanyuPinyinOutputFormat defaultFormat=new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i=0;i<chars.length;i++){if(chars[i]>128){try{sb.append(PinyinHelper.toHanyuPinyinStringArray(chars[i],defaultFormat)[0].charAt(0));}catch (Exception e){e.printStackTrace();}}else{sb.append(chars[i]);}}return sb.toString();}/*** 获取汉字字符串的首字母* 中国:Z* @param string* @return*/public static String getPinYinFirstLetter(String string){sb.setLength(0);char c=string.charAt(0);String[] pinyinArray=PinyinHelper.toHanyuPinyinStringArray(c);if (pinyinArray!=null){sb.append(pinyinArray[0].charAt(0));}else{sb.append(c);}return sb.toString().toUpperCase();}/*** 获取汉字字符串的汉语拼音* 中国:zhongguo* @param chines* @return*/public static String getPinYin(String chines) {sb.setLength(0);char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {sb.append(PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0]);} catch (Exception e) {e.printStackTrace();}} else {sb.append(nameChar[i]);}}return sb.toString();}}

第三步:在添加数据源里面使用(也就是你输入拼音首字母要匹配的名字)

String pinyin = Pinyin4jUtil.getPinYin(bean.getName());
bean.setPinyin(pinyin);

第四步:在adapter里面继承 implements Filterable 过滤(不管是listview还是recycleview都可以实现)

第五步:自定义适配

// 定义过滤的适配
private class PersonFilter extends Filter {private List<Bean> bean;public PersonFilter(List<Bean> list) {this.bean= list;}@Overrideprotected FilterResults performFiltering(CharSequence constraint) {FilterResults results = new FilterResults();if (constraint == null || constraint.length() == 0) {results.values = bean;results.count = bean.size();} else {List<Bean> mList = new ArrayList<Bean>();for (Bean p: bean) {if (p.getName().toUpperCase().startsWith(constraint.toString().toUpperCase())|| p.getPinyin().toUpperCase().startsWith(constraint.toString().toUpperCase())) {mList.add(p);}}results.values = mList;results.count = mList.size();}return results;}@Overrideprotected void publishResults(CharSequence constraint, FilterResults results) {displayList = (List<Bean>)results.values;notifyDataSetChanged();}}

第六步:实现调用过滤

@Override
public Filter getFilter() {if (filter == null) {filter = new PersonFilter(realList);}return filter;
}

android 拼音过滤、匹配首字母相关推荐

  1. android 仿微信联系人 首字母分组快速索引

    总结是一种习惯,不能停,一停人就懒了,都快一个月没有写了!该提提神了! 进入正题:android 仿微信联系人 首字母快速索引,先用下美团的索引效果图: 1.自定义View字母索引栏(右边那一列): ...

  2. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

    汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...

  3. 中英文混合拼音排序(从首字母开始,相同则往下比较)

    中英文混合拼音排序(从首字母开始,相同则往下比较) 中文/英文混合数据 进行转拼音(中文),按照26个字母顺序排序,从首字母开始比较,相同则比较第二个字母,如此类推,直到结束排序为止. pom.xml ...

  4. Java获取中文拼音、中文首字母缩写和中文首字母

    我们有时候会遇到这样的情况,需要获取某些中文的拼音.中文首字母缩写和中文首字母,下面我将为大家介绍一下如何获取中文拼音的缩写. 1.项目建立和配置 首先,我们建立一个java项目,新建libs文件夹并 ...

  5. Excel汉字转拼音并提取首字母

    Excel汉字转拼音并提取首字母步奏 1.打开VB窗口alt+f11可以快捷打开 2.如下图新建模块 3.模块建好后插入代码 Function getpychar(char)tmp = 65536 + ...

  6. Excel中文转拼音(中文首字母)

    Excel中文转拼音(中文首字母) 1.打开Excel->Alt+F11->Viaual Basic编辑器 2.在弹出来的窗口中点击插入->模块->ctrl+s 保存 Func ...

  7. 正则匹配-首字母是$ _ 英文 ,内容包括英文 数字 $ _

    网上找了一圈也没找到匹配首字母$,就和小伙伴试了出来 首字母是$ _ 英文 ,内容包括英文 数字 $ _: 正则:new RegExp('^(\\$|[a-zA-Z_])[a-zA-Z0-9_\\$] ...

  8. js实现汉字转拼音(解决首字母排序问题)

    实现思路 汉字有21个声母:b, p, m, f, d, t, n, l, g, k, h, j, q, x, zh, ch, sh, r, z, c, s 有韵母24个,其中单韵母有6个:a, o, ...

  9. Java-汉字字符串转拼音,包括首字母和全拼

    本方法通过pinyin4j这个工具包来实现. 主要流程为先将字符串转换为char[]数组,再循环判断字符是否是汉字,这一步主要使用汉字Unicode编码进行匹配,是汉字则调用pinyin4j中的汉字转 ...

  10. 小程序楼层索引,将汉字转换为拼音并以首字母排序

    1.根据正则码校验汉字对应的拼音: export default {pinyin: {"a": "\u554a\u963f\u9515","ai&qu ...

最新文章

  1. C语言不要重复包含.h头文件和.c文件
  2. wp博客写文章500错误_500多个博客文章教我如何撰写出色的文章
  3. 程序员加班很严重吗?看看国外程序员怎么怼老板!
  4. SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!
  5. 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
  6. [C# 基础知识梳理系列]专题四:事件揭秘
  7. 登录tomcat服务器首页直接跳转到项目
  8. 3.指定IP地址抓包
  9. 基于stm32智能风扇_意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验...
  10. 作业帮冯雪胡不归问题_作业帮学习平台微信服务号关注
  11. 适合初学者使用的Mac绘图软件推荐
  12. 重庆地区外卖店铺分析系统的设计与实现
  13. 知乎|10个程序员必备免费电子书下载网站
  14. 网站建设中百度快照劫持是什么?劫持百度快照是怎么回事?
  15. vscode替换全局搜索快捷键
  16. h5支付——前端需要处理什么?
  17. 如何用Procmon.exe来监视SQLSERVER的logwrite大小
  18. Flutter开发:给image设置圆角的方法
  19. 人脸姿态估计(计算欧拉角)
  20. 北航研究生计算机网络实验报告,实验7_北航研究生计算机网络实验

热门文章

  1. visio常用快捷键_Visio2019常用形状对象的快捷键及常用操作技巧举例(一)
  2. 唯库拼课课程大合集更新111门
  3. 马虎词汇教程1-5(转载)
  4. 360随身Wifi怎么使用
  5. 小牛性能服务器图片,小牛8玩游戏卡不卡? 实测后发现真不差
  6. oracle实验三创建视图,实验1——Oracle数据查询
  7. vbs或vbe如何修改图标
  8. 21条自动化测试过程中遭遇的问题及解决思路
  9. APK Multi-Tool(反编译工具)教程
  10. lattice planner