1、自定义View实现字母导航栏
2、ListView实现联系人列表
3、字母导航栏滑动事件处理
4、字母导航栏与中间字母的联动
5、字母导航栏与ListView的联动
1、先看主布局,方便后面代码的说明
2、分析自定义字母导航栏
1.我们在使用的时候把宽设置为20dp,高设置为填充父控件,所以这里获取的宽度为20dp
2.通过循环,画出竖直的字母,每画一次得重新设置一下颜色,因为我们需要一个选中的字母颜色和默认不一样
3、ListView实现联系人列表
1.在主Activity中,定义一个数据数组,使用工具类获取数组的第一个字母,使用Collections根据第一个字母进行排序,由于工具类有点长,就不贴出来了。
2.创建一个ListView子布局,创建一个Adapter进行填充。
主布局
ListView子布局
Adapter
4、字母导航栏滑动事件处理、字母导航栏与中间字母的联动
1.在自定义View中重写dispatchTouchEvent处理滑动事件,最后返回true。
2.在主Activity传进来一个TextView,在我们滑动的时候设置Text,雅思词汇书松开的时候消失Text。设置Text的时候需要计算Text的位置,并且滑过多的话会出现数组越界的问题,所以我们在里面处理数组越界问题。
3.最后,提供一个接口,记录我们滑到的字母,为了后面可以和ListView联动。
5、字母导航栏和ListView的联动
1.我们已经通过接口传递过去了一个选择的字母,和在adapter写好了根据字母查询position的方法,这个时候只要主Activity对自定义View设置监听,判断即可。
源码下载:建议使用Import Module