Liudroid-SectionIndexer解释及示例下载

Liudroid-SectionIndexer解释及示例下载SectionIndexer是一个接口,实现这个接口可以使控件在快速滑动的时候出现一个提示框。比如ListView的提示框,如图所示:

首先说明的一件事是,这个大写的D及其边框、位置,是系统自己生成的,也就是SectionIndexer接口。我看网上有的大牛自己写一个方框放到屏幕上,控制显示及隐藏,可能是参照了相关源代码,也可能是自己相出了一种替代方式。但是这里,我的实验结果却是证明,SectionIndexer是可以自己出现这个提示View的。

 

 

 

好了,废话少说,说一下这个接口。

//存放索引提示信息,程序根据通讯录动态生成
private ArrayList sectionContentArray = new ArrayList();
//存放sectionContent的开始的位置
private ArrayList SectionIndics = new ArrayList();

上面定义了两个容器,一个是存放提示信息:比如A,B,C,D…..
另一个是存放这些信息的开始位置,比如A从第0个位置开始,B从第13个位置开始,C从第52个位置开始…..

好了,明白了这两个,下面就是向这两个容器中添加应该有的数据了,这个根据具体应用写具体的方法。我的方法可以看我的代码,我在这里就不啰嗦了,注释非常详细了已经
在这里我要特别说明一下,我的那个Demo实现了根据汉语获得英文首字母,但是做的不是太好,因为引入了第三方包,我建议提示框直接显示中文,这个我已经实现了,但是Demo中我并没有改过来,很容易改,我想你们也可以自己去改。方法就是获取所有通讯录姓名的第一个字符(汉字)。那样的 话listview打开速度很快并且符合国人习惯。

实现SectionIndexer接口,必须重写三个方法:

@Override
public Object[] getSections() {
//这个sections是一个提示信息列表
//每一个元素就是显示在方框中的字符
//设置之后,SectionIndexer接口会自动去现实
Object[] sections = new Object[sectionContentArray.size()];
for(int i = 0;i sections[i] = sectionContentArray.get(i);
}

return sections;
}

@Override
public int getPositionForSection(int section) {
//获得每一个section的头位置
//也就是每个字母在list中的第一个位置
//这个section的值变化区间应该是0-sections.length
//sections就是上一个函数中定义的Object[] sections
return SectionIndics.get(section);
}

@Override
public int getSectionForPosition(int position) {
return 0;
}

注释都在代码里了,应该能看得懂。看不懂的可以留言交流。
附上下载地址:[download id=”1″]
下载之后加上.rar后缀

Liudroid-SectionIndexer解释及示例下载

  • 标签:
分类:Android
点赞: 0

7条评论

  1. Liudroid说道:

    其实这个示例中有很多地方可以学习

    1、自定义Listview布局
    2、自定义Adapter
    3、Android客户端与HTTP请求
    4、多线程、异步更新
    5、Filterable接口的使用
    ……

  2. ini说道:

    不错,就是不能下载!

    1. Liudroid说道:

      @ini 呵呵,现在能下载了,默认权限是注册用户才能下载,已经修正了

  3. rambo说道:

    我按照你的方法实现了section,位置和字母从log打印的来看都准确无误,但是在滑动的时候就是没出现预期的那个提示效果,不懂哪里出问题了,那三个函数也重写了,是按照你的那种方法写的,不知道是什么原因,其他还有什么细节的地方需要调用什么函数么?

  4. 踩踩踩踩踩说道:

    有时候会卡死。。拉动的速度快且频繁就会。看了几个例子都是这样

  5. JOE说道:

    Hi,您好:我的問題是這樣的,我往通訊錄裏面添加了一個聯繫人,但是logcat裏面總是報出:java.long.NoClassDefFoundError的錯誤,我知道是pinyin4j導入的問題,可是我刪除后再導入還是會報錯哦,求指教。而且不添加聯繫人的時候,下面也不出現checkbox

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  • © 2011 知研片语
  • 京ICP备16042882号