先放效果图
场景
要求做一个通讯录页面,用来存储几千条通讯录数据。
需求
需求主要是联系人的样式,有字母标题,拼音排序,滚动时挤压效果(固定标题)
尝试
简单搜了一下,也许是我的关键词不对,只找到了一个源码。
对不起源码作者,反正是找不到出处了。但是还记得作者有说主要是结合了两个作品,
为 夏神博客Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
和 郭神博客Android系统联系人全特效实现(上),分组导航和挤压动画
但是用上手的时候有很多问题。 (注:也可能是我在自己修改的过程中新出现的冲突)
- 第一,拼音解析在代码里,数据量一大,就造成堵塞效果。。尤其在搜索框变化的时候。
- 第二,挤压效果正常情况下可用,但在搜索内容变化的时候,就不再具有了。
- 第三,第一次搜索结果为空时,删除文本,再输入结果为空的搜索内容时,会闪退。
- 第四,Fragment中使用时,固定小标题会弹出等容易修复的小问题。
总之尝试的时候填了很多坑,后来又有莫名的坑。。用着不是很放心,干脆弃了。
解决方案
拼音排序问题
因为通讯录是需要经常更新的,所以直接在后台把存储表中添加一个拼音项。具体实现不是很清楚,应该是用的pinyin4j。
但是几千条数据量有些大,服务器又有些慢,初始化要一分钟多。。干脆