原始需求:
有联系人名字为‘张三’、‘张三丰’,搜索‘ZS’可以通过系统提供的Contacts.CONTENT_FILTER_URI搜索到。但是匹配字符串高亮时,无法智能将‘张三’高亮。
细化需求
- 需要将中文转换为拼音
- 提取拼音的首字母以及所对应原字符串的index
- 获取匹配首字母所对应原字符串的index
- 根据index高亮字符串
资源库
由于需要将汉字转换为拼音,因此需要引入谷歌ContactsProvider源码里的core-libart.jar包和里面的一个源代码类:HanziToPinyin.java。想用最新的可以在谷歌源码里找到。
要是报错:Conversion to Dalvik format failed with error 1
在项目中新建一个文件夹mylib,把core-libart.jar从libs中移动到新建的mylib中,并右键add to build path
代码
添加一个数据类,用来存储匹配成功的字符下标。
public class HighlightIndex {
public final i