SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑

转载 2016年05月30日 20:47:21

大家在做字母索引的时候常常会用到SectionIndexer这个类,里面有2个重要的方法

1.   getSectionForPosition()通过该项的位置,获得所在分类组的索引号

2. getPositionForSection()       根据分类列的索引号获得该序列的首个位置



getSectionForPosition(0) 返回 0

getSectionForPosition(1) 返回 0

getSectionForPosition(2) 返回 0

getSectionForPosition(3) 返回 1

这下,明白这两个方法的区别了把

所以一般有如下代码,来确定是否滑动到了分类的首字母位置

[java] view plain copy
  1. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,    
  2.                   int totalItemCount) {    
  3.               int section = indexer.getSectionForPosition(firstVisibleItem);  //获得索引号  
  4.               int nextSecPosition = indexer.getPositionForSection(section + 1);  //根据索引号获得下一个索引的初始位置  
  5.               if (firstVisibleItem != lastFirstVisibleItem) {    
  6.                   MarginLayoutParams params = (MarginLayoutParams) titleLayout.getLayoutParams();    
  7.                   params.topMargin = 0;    
  8.                   titleLayout.setLayoutParams(params);    
  9.                   title.setText(String.valueOf(alphabet.charAt(section)));    
  10.               }    
  11.               if (nextSecPosition == firstVisibleItem + 1) {  //若是下一个索引号的位置与当前所见的项+1,则进行位移  
  12.                   View childView = view.getChildAt(0);    
  13.                   if (childView != null) {    
  14.                       int titleHeight = titleLayout.getHeight();    
  15.                       int bottom = childView.getBottom();    
  16.                       MarginLayoutParams params = (MarginLayoutParams) titleLayout    
  17.                               .getLayoutParams();    
  18.                       if (bottom < titleHeight) {    
  19.                           float pushedDistance = bottom - titleHeight;    
  20.                           params.topMargin = (int) pushedDistance;    
  21.                           titleLayout.setLayoutParams(params);    
  22.                       } else {    
  23.                           if (params.topMargin != 0) {    
  24.                               params.topMargin = 0;    
  25.                               titleLayout.setLayoutParams(params);    
  26.                           }    
  27.                       }    
  28.                   }    
  29.               }    
  30.               lastFirstVisibleItem = firstVisibleItem;    
  31.           }    
  32.       });    

SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑

大家在做字母索引的时候常常会用到SectionIndexer这个类,里面有2个重要的方法 1.   getSectionForPosition()通过该项的位置,获得所在分类组的索引号 2. ge...
  • Jack_l1
  • Jack_l1
  • 2013年11月05日 14:23
  • 11745

SectionIndexer接口中的getPositionForSection与getSectionForPosition

public int getPositionForSection(int section) { // 通过首字母section应显示的position位置 // 循环遍历所有联系人数据 for(int...
  • qq_35785809
  • qq_35785809
  • 2017年06月04日 15:36
  • 118

SectionIndexer解析与使用 联系人侧边栏

一.SectionIndexer 是一个接口 有三个方法需要实现        1>.  返回一个数组 可以通过拿到adapter对象拿到这个数组 Object[] getSections(); ...
  • u012247772
  • u012247772
  • 2016年06月22日 09:48
  • 1204

getPositionForSection与getSectionForPosition

原文: getPositionForSection与getSectionForPosition   2013-11-04 15:53:25|  分类: android |举报|字号 订阅 ...
  • iloveaman
  • iloveaman
  • 2015年01月20日 12:58
  • 783

侧边快速滑动搜索的SectionIndexer接口简单使用

今天刚用到SectionIndexer,记录下来也算是个笔记。 当我们使用侧边快速滑动,比如RecyclerViewFastScroller库,就要自己在adapter中继承SectionIndexe...
  • shiguiyou
  • shiguiyou
  • 2016年01月13日 11:03
  • 963

getPositionForSection与getSectionForPosition的用法(Listview分块显示)

1、 getPositionForSection返回每个section的第一个元素位置,如 Position Data getSectionForPosit...
  • rabinrow002
  • rabinrow002
  • 2015年12月01日 14:26
  • 662

SectionIndexer---App列表之游标ListView(索引ListView)

游标ListView,提供索引标签,使用户能够快速定位列表项。       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧。       一看图啥都懂了...
  • hello_kevinkuang
  • hello_kevinkuang
  • 2012年05月22日 11:07
  • 7514

SectionIndexer详解

package android.widget;/** * 接口可以被adapter实现,使AbsListView的sections之间可以快速滑动 * 一个secton是一群列表,有很多相似点,例...
  • ying1414058425
  • ying1414058425
  • 2016年08月10日 10:55
  • 822

【SQL解惑】谜题15:找出最近两次工资

解惑一: 1、创建表和插入数据 create table Salaries ( emp_name char(10) not null, sal_date date not...
  • jjjraddit
  • jjjraddit
  • 2017年12月12日 22:46
  • 131

SectionIndexer

大家在做字母索引的时候常常会用到SectionIndexer这个类,里面有2个重要的方法 1.   getSectionForPosition()通过该项的位置,获得所在分类组的索引号 2...
  • qq_24890033
  • qq_24890033
  • 2015年11月12日 14:47
  • 192
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
举报原因:
原因补充:

(最多只允许输入30个字)