SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
来源:互联网 发布:华为数据挖掘岗 编辑:程序博客网 时间:2024/04/27 14:43
大家在做字母索引的时候常常会用到SectionIndexer这个类,里面有2个重要的方法
1. getSectionForPosition()通过该项的位置,获得所在分类组的索引号
2. getPositionForSection() 根据分类列的索引号获得该序列的首个位置
getSectionForPosition(0) 返回 0
getSectionForPosition(1) 返回 0
getSectionForPosition(2) 返回 0
getSectionForPosition(3) 返回 1
这下,明白这两个方法的区别了把
所以一般有如下代码,来确定是否滑动到了分类的首字母位置
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int section = indexer.getSectionForPosition(firstVisibleItem); //获得索引号 int nextSecPosition = indexer.getPositionForSection(section + 1); //根据索引号获得下一个索引的初始位置 if (firstVisibleItem != lastFirstVisibleItem) { MarginLayoutParams params = (MarginLayoutParams) titleLayout.getLayoutParams(); params.topMargin = 0; titleLayout.setLayoutParams(params); title.setText(String.valueOf(alphabet.charAt(section))); } if (nextSecPosition == firstVisibleItem + 1) { //若是下一个索引号的位置与当前所见的项+1,则进行位移 View childView = view.getChildAt(0); if (childView != null) { int titleHeight = titleLayout.getHeight(); int bottom = childView.getBottom(); MarginLayoutParams params = (MarginLayoutParams) titleLayout .getLayoutParams(); if (bottom < titleHeight) { float pushedDistance = bottom - titleHeight; params.topMargin = (int) pushedDistance; titleLayout.setLayoutParams(params); } else { if (params.topMargin != 0) { params.topMargin = 0; titleLayout.setLayoutParams(params); } } } } lastFirstVisibleItem = firstVisibleItem; } });
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- SectionIndexer接口中的getPositionForSection与getSectionForPosition
- getPositionForSection与getSectionForPosition
- getSectionForPosition()与getPositionForSection()
- getPositionForSection与getSectionForPosition的用法(Listview分块显示)
- sectionIndexer
- SectionIndexer
- SectionIndexer解析与使用 联系人侧边栏
- javascript文件在IE缓存中的迷惑与解惑实验
- SectionIndexer详解
- Shell中的IFS解惑
- Shell中的IFS解惑
- Shell中的IFS解惑
- 安卓搜索键改锁屏
- 判断当前系统大小端liteEndian bigEndian
- android 实现左右滑动效果
- Hibernate之事务、隔离级别、悲观锁、乐观锁
- 链表如何逆序
- SectionIndexer中的getSectionForPosition()与getPositionForSection()解惑
- mysql锁现象查看及kill
- 人生
- LeetCode 之 Maximum Depth of Binary Tree
- 最简单的一个堆栈溢出攻击实例 (2) [by Progsoft]
- Hibernate懒加载解析
- 初学cocos2dx笔记01
- 自己
- addEventListener方法来注册事件给对象