# AlphabetIndexer **Repository Path**: atearsan/AlphabetIndexer ## Basic Information - **Project Name**: AlphabetIndexer - **Description**: 字母导航控件。使用List为数据源,提供搜索实现…… - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2013-08-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **AlphabetIndexer** # AlphabetIndexer(字母导航控件)使用List为数据源,直接封装activity、adapter、layout,自带搜索实现。使用的时候只需要include指定的xml布局,然后继承几个类,调用几个方法,就能快速实现字母导航的功能。更多实现细节参考demo就好……
但是这个不是全新原创,是参考了两个不同的控件结合自己的需要改出来的。其他两个控件链接在最底下,也很不错……
运行效果图:http://git.oschina.net/atearsan/AlphabetIndexer/wikis/%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE2 wiki里添加截图, 没违规吧 - - *注:本文假设你已经有Android开发环境* 启动Eclipse,点击菜单并导入Android客户端项目,请确保你当前的Android SDK是最新版。
如果编译出错,请修改项目根目录下的 project.properties 文件。
推荐使用Android 4.0 以上版本的SDK,请使用JDK1.6编译: > target=android-14 **本项目采用 GPL 授权协议,欢迎大家在这个基础上进行改进,并与大家分享。** 下面将简单的解析下项目: ## **一、项目的目录结构** ## > 根目录
> ├ src
> ├ libs
> ├ res
> ├ AndroidManifest.xml
> ├ LICENSE.txt
> ├ proguard.cfg
> └ project.properties
**1、src目录**
src目录用于存放项目的包及java源码文件。 > src
> ├ com.example.alphabetindexer.demo — demo示例
> ├ com.example.alphabetindexer.util — 代码用到的工具类。我偷懒了- -!直接从项目中抽出来的……
> ├ com.example.alphabetindexer.widget — 控件主要的类
**widget下面的类说明** - AlphabetIndexerActivity.java — activity基类,封装所有的了字母导航、搜索操作。使用的时候只要继承这个类,然后调用初始化相应对象的一些方法就行。 - AlphabetIndexerAdapter.java — adapter基类,封装了很多操作。子类只需要在getView里调用显示title(A-Z)的方法就行 - AlphabetIndexerBean.java — 对象实体需要实现的接口。实现SortKey的获取方法就行。 - AlphabetIndexerComparator.java — Bean排序的接口实现类。数据List必须是已经排序好的。 - AlphabetSectionIndexer.java — 导航实现类。 **使用注意** - 1. layout.xml需要 - 2. 其余activity/adapter的实现,参照demo就行。只需要简单的调用super.xx()就好。 **AlphabetIndexer出生**
这个控件也是根据项目需要改出来的,最开始是用其他的控件,都不符合需要。后来左改右改, 最终出来这个,然后封装,发出来……
主要参考了两个控件:
- 1. ContactListView(https://github.com/thehung111/ContactListView), 这个是使用List为数据源,但是拦截了ListView的item事件,所以使用很不方便
- 2. ContactsDemo(http://blog.csdn.net/dawanganban/article/details/9761737), 这个实现很简洁,但是使用cursor为数据源,也不方便。如果一个名片有多个号码,一个item很不好显示。 AlphabetIndexer参考两者的源码,使用List为数据源,但是不会拦截item事件。希望对大家有用…… PS: 还不会使用这个编辑器,我是直接复制osc的,然后在notepad++里修改的- -!欢迎指教……