`
阿顺顺
  • 浏览: 8700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android ListView实现快速定位联系人功能【转发】

 
阅读更多

整合了Android ListView分组界面布局改进java实现List中汉字字母混排序,实现了类似iOS那样的快速定位效果,如下图:

 

 

主要是MainActivity实现了 OnTouchListenerOnGestureListener接口。

其中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实现各种版面设计功能 源码

    本资源"Android ListView实现各种版面设计功能 源码"聚焦于如何利用ListView实现多样化的版面设计,提升用户界面的视觉效果和交互体验。核心知识点主要包括ListView的基础使用、自定义适配器、Header与Footer的添加...

    Android 使用ListView的A-Z字母排序功能实现联系人模块

    在实现联系人模块时,A-Z字母排序功能是常见的需求,它可以帮助用户快速定位到特定联系人的位置。此外,结合搜索功能,可以让用户根据输入框的输入进行实时筛选,提供更好的用户体验。接下来,我们将深入探讨如何在...

    android ListView 网格布局

    本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格布局ListView。 首先,我们要了解ListView的基本结构。ListView是由多个列表项(List Item)组成的,每个列表项通常对应一个View。在Android中,我们...

    android ListView实现树形结构

    在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,要实现一个树形结构,即节点有层级关系的数据展示,就需要进行一些定制化的工作。本篇文章将详细探讨如何在不继承`ListActivity`而是...

    Android ListView实现时间轴功能

    总的来说,实现Android ListView的时间轴功能涉及自定义adapter、布局设计、视图绘制以及性能优化等多个方面。理解并掌握这些知识点,能够帮助开发者创建出富有视觉吸引力且功能强大的时间轴界面。在实际应用中,还...

    联系人ListView实现

    本示例"联系人ListView实现"旨在模仿Android系统中的联系人应用界面,通过ListView来显示一系列联系人信息,提供用户友好的交互体验。这里我们将深入探讨如何在Android中实现这样的功能。 首先,我们需要了解...

    android ListView实现表格

    本教程将详细介绍如何通过自定义ListView来实现一个功能丰富的表格,包括动态添加行列。 首先,我们需要理解ListView的基本工作原理。ListView通过Adapter来绑定数据源,每一项(row)由一个ListView的子View(item...

    Android 重写Listview实现左滑删除功能

    本项目"Android 重写Listview实现左滑删除功能"旨在教你如何在ListView中添加滑动删除的交互效果。 首先,我们需要理解ListView的工作原理。ListView通过复用View(也称为ViewHolder模式)来优化性能,减少内存消耗...

    ListView快速索引 通讯录快速定位

    "ListView快速索引 通讯录快速定位"这个主题关注的是如何在ListView中实现类似微信通讯录的快速定位功能,让用户能够通过字母索引迅速找到所需联系人。这种功能在大型数据集的应用中尤为实用,提高了用户体验。 ...

    android listview嵌套listview实现折叠列表

    为了实现这个功能,我们需要在父ListView的Adapter中为每个条目创建一个包含子ListView的布局。 步骤1:创建父ListView的Adapter。在这个Adapter中,我们需要处理点击事件,以便在点击父列表项时展开或折叠对应的子...

    android listview仿照微信联系人字母排序

    在"android listview仿照微信联系人字母排序"这个项目中,我们将实现一个类似微信的联系人列表,用户可以通过字母快速定位并搜索联系人。这个功能对于拥有大量联系人的应用来说非常实用,提高了用户体验。 首先,...

    Android ListView 下拉刷新、上拉加载

    在ListView中,我们可以通过监听ListView的OnScrollListener来实现这一功能。当用户滚动到底部时,加载更多数据。首先,我们需要定义一个变量记录是否正在加载更多数据,然后在滚动监听器中判断: ```java ListView...

    AndroidListView侧栏字母条索引定位demo

    这个"AndroidListView侧栏字母条索引定位demo"是实现这一功能的具体示例。 首先,我们需要理解侧栏字母条,也称为快速索引器(Quick Indexer)。它的作用是在ListView的右侧或顶部显示一个可滑动的字母条,用户可以...

    Android listview自动换行

    在本篇中,我们将深入探讨如何在Android中为ListView实现自动换行的功能。 首先,我们需要理解ListView的工作原理。ListView通过复用视图(ViewHolder)来提高性能,当用户滚动时,它会重新使用已经滑出屏幕的视图...

    android的listview嵌套listview,列表嵌套列表 android studio版本

    总结来说,实现Android的ListView嵌套ListView需要理解ListView的工作机制,创建并管理两个Adapter,以及在布局文件中正确地嵌套ListView。这虽然不是特别高深的技术,但却是Android开发中常见的需求,熟练掌握能...

    android listview 实现左滑删除置顶

    以上就是实现“Android ListView左滑删除和置顶”功能的主要技术点和步骤。通过理解ListView的工作机制和适当地利用Android提供的组件和API,开发者可以创建出具有丰富交互特性的列表界面。在实际项目中,可能还需要...

    Android实现ListView的增删改查Demo

    这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...

    Android ListView 实现分批加载

    本文将深入探讨如何在Android中实现ListView的分批加载功能。 一、分批加载原理 分批加载的基本思想是只加载用户当前可视范围内的数据,当用户滚动到列表底部时,再加载下一批数据。这样可以显著减少内存占用,并...

    Android编程实现ListView中item部分区域添加点击事件功能

    本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...

Global site tag (gtag.js) - Google Analytics