参考:
http://blog.csdn.net/xiaanming/article/details/12684155
http://104zz.iteye.com/blog/1684654
http://blog.csdn.net/zhf198909/article/details/7164534
思路:
1.自绘制右边的SideBar,包括A-Z或者只绘制已有数据的首字母
2.设置onTouch时的情况,选择某一个位置时,根据坐标计算出索引字母,设置回调接口
3.adapter实现SectionIndexer,重写以下方法,根据首字母得到LIST中的位置(主要是实现getPositionForSection)
4.注册SideBar相应的回调(例如在ListView所在窗口中间绘制大的字母图,将ListView滚动(scrollTo或setSelection)到指定position,根据getPositionForSection的方法得到)
/**
* 根据ListView的当前位置获取分类的首字母的char ascii值
*/
public int getSectionForPosition(int position) {
return list.get(position).getSortLetters().charAt(0);
}
/**
* 根据分类的首字母的Char ascii值获取其第一次出现该首字母的位置
*/
public int getPositionForSection(int section) {
for (int i = 0; i < getCount(); i++) {
String sortStr = list.get(i).getSortLetters();
char firstChar = sortStr.toUpperCase().charAt(0);
if (firstChar == section) {
return i;
}
}
return -1;
}
@Override
public Object[] getSections() {
return null;
}