很多软件如ex拨号、qq通讯录都有类似功能
一:拼音首字母匹配联系人
二:拼音匹配联系人
三:号码匹配联系人
这里简单说下注意要点和算法思路吧
匹配规则,这里有三种,分别是联系人拼音匹配,联系人拼音首字母匹配,联系人号码匹配。其中联系人拼音首字母匹配只要匹配的字符串为拼音首字母中的子字符串即可,二拼音匹配除了符合是其子字符串外还需符合子字符串首字母为,汉字中的拼音首字母。如王小明(wangxiaoming)可匹配 wangx、xiaomin、等,但不匹配angxiao、iaoming。号码匹配较简单,也只需符合子字符串即可。
算法思路:
1,首先是将所有联系人的信息加载到内存,为了显示与数据库内容一致可在onresume时候读取,若不严格要求内容一致可在,onstart时候读取,需要的数据有、联系人id,名字、号码、头像(可选)。
2,将数字键盘输入的数字组合,转化成用于匹配的字母串数组
3,循环所有联系人与字母串数组进行三种匹配,若符合将其加入到,用于显示的结果集合中
4,取三种结果集的并集(其实只需一个集合,既匹配过程中已有集合在里面便不再加入结果集)
5,ListView更新自定义Adapter,主要重点是,显示加亮名字,号码,字段。用SpannableString辅助
这里在说第二步,数字组合如何转换成字母串数组。我们知道数字键对应的英文字母是这样的:2(ABC),3(DEF),4(GHI),5(JKL),6(MNO),7(PQRS),8(TUV),9(WXYZ)
可以看到一个数字对应的字母数为3-4,我们以3为准,2个数字键对应的字母串组合3*3 = 9
以此类推可知,字母串数与数字数的关系为 3的n次方,算法复杂度上来数这是个极差的效率。只要超过十几位便是天文数字,所以必须优化。我们采用:不符去除,逐级相乘的办法。例如输入23后有匹配数据的字母串组合有{AD,BE},那么当我们输入第三个数字键时,字母串组合只有2*3个,进行匹配后,再除去不符合的字母串组合。依次下去,便可,得到较少字母串组合数。但只有这样还不够,因为还有一个特殊的键,删除键。所以我们需要有一个栈,用于保存之前符合匹配的字母串。输入数字键,时候推入栈顶,输入删除键时候推出该字母串组合。
转载请注出处
- 大小: 117.1 KB
- 大小: 117.4 KB
- 大小: 117.8 KB
分享到:
相关推荐
该demo实现android拨号键盘拨打电话击联系人功能,并实现服务监听来去电及获取来去电号码功能
Android编程实现的一个拨号的功能,里面有手机类似的拨号键盘,能够打开联系人列表,能够实现基本的数字拨号,能够拨打电话。
小米平板LTE版拨号键盘,安装此apk文件,将在通讯录中出现拨号键盘界面,不会出现新的图标
android系统拨号盘应用, 有呼出呼入记录, 以及信息分组的代码逻辑。 虽然数据量比较大, 但列表依然平滑,灵敏。 你不好奇是怎么作到的吗?
jquery 拨号盘,完全原创,直接运行里面的index.html即可查看效果。
自定义拨号键盘含拨号 联系人 短信、定位
修改4.1.2拨号盘
手机拨号盘搜索功能,之前做通讯录软件,其中在做拨号盘的时候一直为怎么实现T9输入烦恼,上网找了很多帖子,都没有满意的答案。不过最后终于是实现了,看社区内好像也有不少朋友需要,在此分享一下。这个是在我项目...
单片机C语言程序设计05 1602LCD显示电话拨号键盘按键实验(基于8051+Proteus仿真)单片机C语言程序设计05 1602LCD显示电话拨号键盘按键实验(基于8051+Proteus仿真)单片机C语言程序设计05 1602LCD显示电话拨号键盘...
基于单片机1602LCD显示电话拨号键盘按键实验仿真设计资料
一个用于在android手机上进行拨号的拨号盘软件
酷派7260官方拨号盘,由具体型号提取软件出来,进一个叫root的文件夹里面提取出.apk文件,觉得麻烦就刷机,不过一般是找不到你那个rom的了,除非你那是官方版的rom
仿Nexus 4 拨号盘界面
1.手机通讯录拨号盘的修改和优化。如来电通效果; 2.通话记录读取和合并 3.自动获取通讯录信息 4.通讯录拨号 发短信
Android 5.0拨号盘 Dialer源码
iphone4 拨号键盘美化。让你的iphone更完美
1602LCD显示电话拨号键盘按键 适合毕业论文,课程设计
多功能拨号盘源码.zip
一款Android拨号盘案例,功能上完全实现了目前其他通讯录中拨号盘的功能,但在加载效率上还有不足。目前1g单核cpu的索爱mt15i的测试机,1500多的联系人,加载时间大概在8秒左右,当然,一般用户不会有这么多联系人的...
实现较为完整的联系人词条搜索算法。SearchCore 为C语音编写,ios、android、symbian都可以用。具体功能见下面。 内存占用: 10000个人2M左右 效率:6K人搜索,100ms左右(iphone4) 支持搜索内容: 1.姓名搜索:...