Android关于列表容器的搜索功能

忙了两个夜晚,两次一直撸到四点,终于在星名片v1.5实现了搜索功能。这个过程中其实有蛮多的想法,但是最后渐渐的否掉了

把这几天的想法慢慢的记录下来吧

1.采用数据库进行搜索

这可能是不太科学的方法,因为本身数据从服务器下载是没有存进数据库的,而是采用sharedpreferences进行缓存,所以我开始尝试另一种方式

2.Adapter的getFifter()过滤

在这个点上找了许多资料阅读和使用起来,但是在AndroidStudio一直是报错。后来才发现其中的错误

因为星名片使用的是可实现二级可展开收缩列表的ExpandableListView容器,而ExpandableListView使用到的适配器是没有getFifter()方法的,无奈放弃了

3.使用String的indexof()通过KMP算法及运用java的中文转拼音类

运用indexof()方法可快速查找出字符串中跟其用户搜索所需的字符串,而添加java的中文转拼音类则可以快速实现拼音查找

java的中文转拼音类可从搜索引擎快速查找到

不过与ExpandableListView结合起来运用字符串匹配算法KMP还需要时间慢慢去琢磨,在这种方法下,成功的完成了搜索功能

514382230172319315447870342670733888  89159413774766591

更新的时候还遇到了问题

因为在上一个版本中使用了自动升级的功能,可是到了用真机测试时,提示“未安装应用程序”

我检查了几次安装的权限,发现并没有什么问题

产生这种现象的原因就是:手机上已经安装好的apk和正在安装的apk包名都是一样的,可是签名不一样,所以它会提示你安装不成功。在服务器上的升级包是用android-tool做好签名的,而我在测试的时候是用真机测试的,也就是说电脑上的android程序直接运行在了手机上,而没有经过打包签名,最后导致的结果就是文件正常下载到手机上,可是安装不成功。

其实解决方法也很简单了:把签名的安装包安装到手机上,再测试升级的功能,这样就没有问题了。

这是在搜索引擎中得到的答案。


5 条评论

昵称
  1. 匿名

    不错

  2. HugeTerry

    哈哈..好好学~总有一天能参与的

  3. 菠萝小莫

    好期待菜单的改进
    好希望我也能参与……

  4. 匿名

    写的还行~

  5. 多啦

    赞一个~