Fork me on GitHub

Android中修改源码实现AutoCompleteTextView控件的模糊匹配

最近在做Android开发,使用其控件AutoCompleteTextView时发现只能实现前缀匹配,也就是说只能匹配以所输入的字符开始的数据,觉得google这个做的不好,不够人性化。要是数据非常多,而又确实不记得所要找的数据以什么字符开始的,那该怎么办呢?哈哈,作为中国共产党领导下的共产主义下的和谐社会下的伟大而又苦X的程序猿,这小小的问题怎么能难得住我们。

大家知道,Android系统是开源的,也就是说我们可以通过修改其源码来解决这个问题。

先看截图:

           

上图中左边是AutoCompeteTextView控件前缀匹配结果,右边的是通过修改其源码实现其中缀和后缀匹配。

接下来说下怎么修改Android源码,当然要想修改其源码,必须要下载Android源码,建议有条件的童鞋们使用Git工具自己下载,因为Android系统一直在更新,其源码也在不断地更改。懒虫们可以从博文结尾的链接中下载。

首先在android\widget的目录下找到ArrayAdapter.java文件并打开,下面是部分源码:

找到”if (words[k].startsWith(prefixString)) {“这行,将其改为“if words[k].indexOf(prefixString)!=-1) {”便可。还需将ArrayAdapter所属的包改为自己的包。如果以后还会用到,建议将其打包为.jar文件。

项目目录结构如下:


下面是Main Activity,写了注释:

只要注意这里的ArrayAdapter使用的是自己修改的,前面加上包名以示区别。

项目源码下载:https://github.com/johnsonz/android-autocompletetextview

作者:Johnson
原创文章,版权所有,转载请保留原文链接。

发表评论

电子邮件地址不会被公开。 必填项已用*标注