# AlphabetIndexer
**Repository Path**: tracyers/AlphabetIndexer
## Basic Information
- **Project Name**: AlphabetIndexer
- **Description**: 字母导航控件。使用List为数据源,提供搜索实现……
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2013-08-22
- **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++里修改的- -!欢迎指教……