2016-10-9 更:
进行一次几乎重写的大规模重构:
1、从ListView更改为RecyclerView的实现
2、性能优化,更易使用的API,更易拓展的HeaderView等等.**
相关阅读:[设计模式]记一次开源库的重构历程
这个月被楼上拉走做了一个月的苦力,总算闲下来了,水一篇简书先。
楼上app改版有个的城市选择页面,需求就是带字母索引的城市选择ListView/RecyclerView,在github上找了一圈,发现要么是功能有限的封装库,要么就是没有经过封装的Demo。所以呢,最终决定自己造轮子--IndexableStickyListView。
10几20行代码就可以轻松实现带有 城市选择、搜索 or 联系人选择、搜索等功能的界面。
效果图
先看Demo效果,提供2种类型的悬浮提示框,个人更喜欢图2中的Material Design风格的右侧气泡炫悬浮框。
常规居中悬浮框.gifMD风格气泡悬浮框.gif
特性
1、根据数据源,自动排序生成字母索引Bar,以及字母Header
2、字母Header是粘性的(Sticky)
3、ListView中的Item,可以完全自由定制、拓展
4、绑定数据源、搜索等功能,都是异步的,通过HandlerThread优化实现
5、自由添加Header数据(GPS定位、热门城市功能),ListView的addHeaderView功能也可以随意使用
6、提供2种悬浮提示View,常规居中 以及 MD风格的右侧气泡
工作过程
1、初始化、绑定数据
用一个简单的图来表示吧(IndexBar就是右侧的字母条)
2、搜索、过滤数据
对于搜索,首先我们要确保数据搜索过程是异步的,不然在数据比较多的情况下,肯定会掉帧卡顿的。
这部分我单独写了一篇简书介绍:[Android]谈谈“搜索”,2种场景下的最优解
最后
该库还需要后续的维护和优化,比如使用的pinyin4j.jar过大,效率也不高,下一步打算替换成更小的拼音转化库。
现在使用TinyPinyin库替换了Pinyin4j.jar库,体积减小108K,速度提升了4倍!
在使用中有任何问题,随时可以联系我。
最后再次放上源码地址,点这里,点这里
网友评论