Android通讯录RecyclerView实现--带挤压效果
2016-07-23 10:33
645 查看
先放效果图
对不起源码作者,反正是找不到出处了。但是还记得作者有说主要是结合了两个作品,
为 夏神博客Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
和 郭神博客Android系统联系人全特效实现(上),分组导航和挤压动画
但是用上手的时候有很多问题。 (注:也可能是我在自己修改的过程中新出现的冲突)
第一,拼音解析在代码里,数据量一大,就造成堵塞效果。。尤其在搜索框变化的时候。
第二,挤压效果正常情况下可用,但在搜索内容变化的时候,就不再具有了。
第三,第一次搜索结果为空时,删除文本,再输入结果为空的搜索内容时,会闪退。
第四,Fragment中使用时,固定小标题会弹出等容易修复的小问题。
总之尝试的时候填了很多坑,后来又有莫名的坑。。用着不是很放心,干脆弃了。
但是几千条数据量有些大,服务器又有些慢,初始化要一分钟多。。干脆初始化直接SQLite读取db文件,数据更新的时候更新修改的记录。
单纯用拼音排序,又填了些小坑,以王维和万国,包拯和鲍鱼为例
WANGWEI,WANGUO会造成王和万之间的穿插,需要分隔符;
也会造成BAOZHENG 和BAOYU 同音字的穿插,需要按音排序之后按字排。
使用的排序语句时 order by pinyin ,最后的格式是:
WANG 王 WEI 维;WAN 万 GUO 国;……注意全拼和字之间要有空格。
(因为SQLite有点弱,有些MySQL方法不能用;如果没有空格,会比较 WANG王 和 WAN万。。)
然而完全不知道怎么固定头部。。。幸好找到个高级开源sticky-headers-recyclerview
非常好用。
搜索栏比较简单,监听下内容变化,更新adapter就好了。
场景
要求做一个通讯录页面,用来存储几千条通讯录数据。需求
需求主要是联系人的样式,有字母标题,拼音排序,滚动时挤压效果(固定标题)尝试
简单搜了一下,也许是我的关键词不对,只找到了一个源码。对不起源码作者,反正是找不到出处了。但是还记得作者有说主要是结合了两个作品,
为 夏神博客Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
和 郭神博客Android系统联系人全特效实现(上),分组导航和挤压动画
但是用上手的时候有很多问题。 (注:也可能是我在自己修改的过程中新出现的冲突)
第一,拼音解析在代码里,数据量一大,就造成堵塞效果。。尤其在搜索框变化的时候。
第二,挤压效果正常情况下可用,但在搜索内容变化的时候,就不再具有了。
第三,第一次搜索结果为空时,删除文本,再输入结果为空的搜索内容时,会闪退。
第四,Fragment中使用时,固定小标题会弹出等容易修复的小问题。
总之尝试的时候填了很多坑,后来又有莫名的坑。。用着不是很放心,干脆弃了。
解决方案
拼音排序问题
因为通讯录是需要经常更新的,所以直接在后台把存储表中添加一个拼音项。具体实现不是很清楚,应该是用的pinyin4j。但是几千条数据量有些大,服务器又有些慢,初始化要一分钟多。。干脆初始化直接SQLite读取db文件,数据更新的时候更新修改的记录。
单纯用拼音排序,又填了些小坑,以王维和万国,包拯和鲍鱼为例
WANGWEI,WANGUO会造成王和万之间的穿插,需要分隔符;
也会造成BAOZHENG 和BAOYU 同音字的穿插,需要按音排序之后按字排。
使用的排序语句时 order by pinyin ,最后的格式是:
WANG 王 WEI 维;WAN 万 GUO 国;……注意全拼和字之间要有空格。
(因为SQLite有点弱,有些MySQL方法不能用;如果没有空格,会比较 WANG王 和 WAN万。。)
拼音快速检索栏
上述项目的SideBar被我保留了下来,还是挺好用的。列表和搜索栏
弃用的第一时间是想自己写一个的,想着要写的话肯定用RecyclerView啊。然而完全不知道怎么固定头部。。。幸好找到个高级开源sticky-headers-recyclerview
非常好用。
搜索栏比较简单,监听下内容变化,更新adapter就好了。
附:
开发期间看到的通讯录思考
虽然通讯录样式没因为这篇文章改变多少,但是多思考思考还是好的。多音字作为姓氏的音
只是自己制作过程中的部分情况,其他完善情况暂无。源码
使用的是AS,注意添加依赖:compile 'com.android.support:recyclerview-v7:23.4.0' compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3'
相关文章推荐
- android——悬浮窗控件Toast
- Android listview与adapter用法
- Android listview与adapter用法
- Android中自定义样式与View的构造函数中的第三个参数defStyle的意义
- android中怎么在View构造的attrs中拿到android给的属性以及attrs属性介绍
- android 主题切换(换肤功能)
- android加入图片命名规则
- 安卓旧项目使用Small框架插件化改造踩坑记
- Android M CarrierService框架
- Android Studio导入项目gradle报错,解决方案
- Android--日期对话框和时间对话框
- Service服务
- Android 嵌套Fragment的使用实例代码
- Android startActivityForResult函数
- [置顶] 【Android异常处理】异常、警告处理合集(长期更新)
- Android学习笔记之AndroidManifest.xml文件解析
- android am命令
- Android使用AttributeSet自定义控件的方法
- android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- 如何用Fiddler对Android应用进行抓包 手机抓包的两种方法:wireshark抓包和fiddler抓包