整合了Android ListView分组界面布局改进和java实现List中汉字字母混排序,实现了类似iOS那样的快速定位效果,如下图:
主要是MainActivity实现了 OnTouchListener和OnGestureListener接口。
其中onScroll方法如下:
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
util(e2);
return false;
}
util方法,根据手势位置,确定快速定位到那个字母:
public void util(MotionEvent e2) {
int i = (int) ((e2.getRawY() – view.getTop()) / ((float) view
.getHeight() / 26f));
int j=0;
switch (i) {
case 0:
int pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 1:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 2:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 3:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 4:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 5:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 6:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 7:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 8:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 9:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 10:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 11:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 12:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 13:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 14:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 15:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 16:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
case 17:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 18:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 19:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
case 20:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 21:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 22:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 23:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 24:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
case 25:
pos = (myAdapter).getPositionForSection(j++);
listView.setSelectionFromTop(pos, 0);
break;
default:
break;
}
}
这样就实现了随手势在右边区域滑动,listview快速定位。
快速滑动首字母提示参见:ListView快速滑动示例增加首字母提示。
源代码见:http://bigcateasymorse.googlecode.com/svn/trunk/android-listview-separate-demo0.5/
相关推荐
Android ListView实现各种版面设计功能 源码
Android ListView上下快速滑动,列表根据右边的滑动区域的英文字母快速准确的筛选出首字母相同的联系人列表,搜索输入框根据输入的文字自动匹配并显示联系人列表。
android listview嵌套listview实现折叠列表
android 布局中网格视图 ListView的简单运用 采用的是最简单的ArrayAdapter适配器
android用Listview实现时间轴的效果
实现了 Android listView 分页功能,代码可以运行,功能完善。
这个下demo是用listview实现了时间轴的功能,该功能非常适合显示物流状态或者是时间记录等,里面附有效果截图,同时代码有也详细的注释,非常容易理解。
Android ListView 实现分批加载
通过自定义listView实现表格,动态添加行列
Android使用ListView实现时间轴
使用实现ListView实现微信好友列表 android ListView 微信 好友列表 自定义ImageView 自定义ListView
用ListView组件实现树形结构 主界面是继承Activity类 而不像网络上大多数都是继承ListActivity类
ANDROID自定义listview实现了联系人的排序效果
Android ListView分页功能源码
android studio实现listview的增加,左滑删除 listview以表格样式实现
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...
Android实现ListView的增删改查Demo
android用ListView实现表格样式
android listview实现圆角。 有注释能看懂。
Android ListVIew复制粘贴的实现