整合了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实现各种版面设计功能 源码"聚焦于如何利用ListView实现多样化的版面设计,提升用户界面的视觉效果和交互体验。核心知识点主要包括ListView的基础使用、自定义适配器、Header与Footer的添加...
在实现联系人模块时,A-Z字母排序功能是常见的需求,它可以帮助用户快速定位到特定联系人的位置。此外,结合搜索功能,可以让用户根据输入框的输入进行实时筛选,提供更好的用户体验。接下来,我们将深入探讨如何在...
本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格布局ListView。 首先,我们要了解ListView的基本结构。ListView是由多个列表项(List Item)组成的,每个列表项通常对应一个View。在Android中,我们...
在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,要实现一个树形结构,即节点有层级关系的数据展示,就需要进行一些定制化的工作。本篇文章将详细探讨如何在不继承`ListActivity`而是...
总的来说,实现Android ListView的时间轴功能涉及自定义adapter、布局设计、视图绘制以及性能优化等多个方面。理解并掌握这些知识点,能够帮助开发者创建出富有视觉吸引力且功能强大的时间轴界面。在实际应用中,还...
本示例"联系人ListView实现"旨在模仿Android系统中的联系人应用界面,通过ListView来显示一系列联系人信息,提供用户友好的交互体验。这里我们将深入探讨如何在Android中实现这样的功能。 首先,我们需要了解...
本教程将详细介绍如何通过自定义ListView来实现一个功能丰富的表格,包括动态添加行列。 首先,我们需要理解ListView的基本工作原理。ListView通过Adapter来绑定数据源,每一项(row)由一个ListView的子View(item...
本项目"Android 重写Listview实现左滑删除功能"旨在教你如何在ListView中添加滑动删除的交互效果。 首先,我们需要理解ListView的工作原理。ListView通过复用View(也称为ViewHolder模式)来优化性能,减少内存消耗...
"ListView快速索引 通讯录快速定位"这个主题关注的是如何在ListView中实现类似微信通讯录的快速定位功能,让用户能够通过字母索引迅速找到所需联系人。这种功能在大型数据集的应用中尤为实用,提高了用户体验。 ...
为了实现这个功能,我们需要在父ListView的Adapter中为每个条目创建一个包含子ListView的布局。 步骤1:创建父ListView的Adapter。在这个Adapter中,我们需要处理点击事件,以便在点击父列表项时展开或折叠对应的子...
在"android listview仿照微信联系人字母排序"这个项目中,我们将实现一个类似微信的联系人列表,用户可以通过字母快速定位并搜索联系人。这个功能对于拥有大量联系人的应用来说非常实用,提高了用户体验。 首先,...
在ListView中,我们可以通过监听ListView的OnScrollListener来实现这一功能。当用户滚动到底部时,加载更多数据。首先,我们需要定义一个变量记录是否正在加载更多数据,然后在滚动监听器中判断: ```java ListView...
这个"AndroidListView侧栏字母条索引定位demo"是实现这一功能的具体示例。 首先,我们需要理解侧栏字母条,也称为快速索引器(Quick Indexer)。它的作用是在ListView的右侧或顶部显示一个可滑动的字母条,用户可以...
在本篇中,我们将深入探讨如何在Android中为ListView实现自动换行的功能。 首先,我们需要理解ListView的工作原理。ListView通过复用视图(ViewHolder)来提高性能,当用户滚动时,它会重新使用已经滑出屏幕的视图...
总结来说,实现Android的ListView嵌套ListView需要理解ListView的工作机制,创建并管理两个Adapter,以及在布局文件中正确地嵌套ListView。这虽然不是特别高深的技术,但却是Android开发中常见的需求,熟练掌握能...
以上就是实现“Android ListView左滑删除和置顶”功能的主要技术点和步骤。通过理解ListView的工作机制和适当地利用Android提供的组件和API,开发者可以创建出具有丰富交互特性的列表界面。在实际项目中,可能还需要...
这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...
本文将深入探讨如何在Android中实现ListView的分批加载功能。 一、分批加载原理 分批加载的基本思想是只加载用户当前可视范围内的数据,当用户滚动到列表底部时,再加载下一批数据。这样可以显著减少内存占用,并...
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...