Android ListView 之 Item 定位显示
来源:互联网 发布:java 管理系统框架 编辑:程序博客网 时间:2024/05/18 02:27
1、ListView 定位到指定 item 的位置
listView.setSelection(position);
- 这个方法的作用就是将第position个item显示在listView的最上面一项,假如有一个ListView控件,其一次只能显示10个item,但现在有20个数据项,设置好adapter以后,默认是第一个数据项显示在最上面,如果我现在调用setSelection(2),则第3个数据项会显示在最上面,调用setSelection(9),则第10个数据项会显示在最上面。但需要注意的是,如果我调用setSelection(19),第20个数据项不会显示在最上面,因为其可以显示10个数据项,最上面的一个最大只可能是11,也就是说如果setSelection传入参数大于10,都只会显示11;如果小于11,则传入参数是几最上面一项显示的就是几.
listView滚动到最后一个条目的方法:listview.setSelection(n-1)(n为数据的个数)
若是有header则position是从header开始,position要做相应的+1,+2
直接定位到某个item: listview.setSelection(position);
滑动定位到某个item(item在可见的第一条):listviewt.smoothScrollToPositionFromTop(position, 0);
滑动定位到某个item(item在可见的最后一条):listviewt.smoothScrollToPosition(position);listview.setFooterDividersEnabled(false);这个方法是控制footer下边是否显示默认的分隔线,如果为true,显示分隔线,否则不显示
2、 判断ListView的第一个item是否完全显示
下面的代码还是忽略了一个小问题,就是如果ListView加了padding属性的话,判断是否完全显示的时候就不能根据>=0判断,而是应该加上paddingTop的高度
更新后的代码如下:
if (mListView.getChildCount() > 0 && mListView.getFirstVisiblePosition() == 0 && mListView.getChildAt(0).getTop() >= mListView.getPaddingTop()) { return true; }先解释几个接口的作用:
ListView.getChildCount()
返回的是这个listView当前显示出来的item数量,也就是在屏幕上可以看到的数量。
ListView.getChildAt(int pos)
返回的是这个listView当前显示出来的item中的第pos项,也就是说索引是从显示出来的第一项开始计算的,如果屏幕上方有n个item看不见,那么这个函数的返回值就是n
ListView.getFirstVisiblePosition()
返回值是当前可以看到的第一个item,在所有item中(包括看不到的)的位置。
View.getTop()
返回值是这个View相对于它的父控件的top值,对于item而言,如果item只有一半显示出来(下半部分),那么返回值应该是 - 这个item的高度
下面开始说明如何判断ListView的第一个item是否完全显示出来
if (mListView.getFirstVisiblePosition() == 0){ // 当前显示出来的第一项就是所有item中的第一项,下面判断是否完全显示 if (mListView.getChildAt(0).getTop() >= 0) { // 第一项完全显示出来 } }
当然也可以写到一个if语句中:
if (mListView.getChildCount() > 0 && mListView.getFirstVisiblePosition() == 0 && mListView.getChildAt(0).getTop() >= 0) { return true; }
- Android ListView 之 Item 定位显示
- ListView中item定位
- Android ListView item背景图片显示方式
- Android ListView item 选中高亮显示
- android listview 显示指定数量的item
- android listView点击item,高亮显示
- [Android学习]ListView显示多种item
- Android ListView显示不同布局Item
- Android listView 设置item显示的数目
- Android ListView item显示时高度变化
- android listview 中 item显示表格样式
- Android ListView item信息显示不全
- Android ListView 滑动到指定item 定位 指定位置
- android ListView item 中放ListView 只显示一行解决办法
- Android ListView item 选中高亮显示之高效实现方式
- listview 定位到某个item
- listview item显示特效
- android之listview的item不可点击
- BZOJ 1012 [JSOI2008]最大数maxnumber (单调栈)
- ceph 副本数据的写入位置和读出
- 读书笔记
- 获取当前DLL所在路径
- 通过args数组获取数据
- Android ListView 之 Item 定位显示
- Ubuntu16.04 TLS 安装mentohust连接校园网
- 两个变量交换值
- 【element-ui】messageBox弹窗提示消息换行问题。
- 建库建表增删改查
- Tyvj P4869 罪犯分组
- 一个计时器的代码
- 获取当前进程的模块句柄(获取当前模块的基址)
- 一.数据结构及求解问题的过程