实习时遇到这么一个需求的更改,把一个带字母快速定位的滑块的listview,将其中的滑块显示全部字母a-z改成listview中数据有哪些,就只显示有数据的字母。在网上搜索了一下这个自定义view的实现,发现和项目中实现的代码基本一致,好吧,原来也是从网上百度到直接复制下来的,汗~
结合项目中的代码和网上的资料,我自己学习分析了一下这个自定义sidebar的实现。先贴上源码,源码参考自:
http://blog.csdn.net/woaieillen/article/details/12712137
public class SideBar extends View {
// 触摸事件
private OnTouchingLetterChangedListener onTouchingLetterChangedListener;
// 26个字母
public static String[] b = { "A", "B", "C", "D", "E", "F", "G", "H", "I",
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z", "#" };
private int choose = -1;// 选中
private Paint paint = new Paint();
private TextView mTextDialog;
public void setTextView(TextView mTextDialog) {
this.mTextDialog = mTextDialog;
}
public SideBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SideBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SideBar(Context context) {
super(context);
}
/**
* 重写这个方法
*/
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 获取焦点改变背景颜色.