今天实现listview的下拉刷新和上拉加载的时候,遇到了一个问题,*就是说需要根据listview中滑动的位置来进行下拉刷新和上拉加载。*

具体点,只有当我的listview滑动到最顶部的时候,这时候下拉才执行刷新操作;只有当我的listview滑动到最底部的时候,这时候上拉才执行加载操作。

那么怎么判断listview的滑动位置呢?其实还是比较好解决的,说一下我的想法:

顶部的判断,根据listview中的第一个item距离listview顶部的距离是否为0。

底部的判断,根据listview中的最后一个item的底部与第一个item的顶部的距离是否为整个listview的高度。

上面的两个想法代码实现如下:

private void setLiseners() {

// listview设置滑动监听

lsv_new_house.setOnScrollListener(new AbsListView.OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView absListView, int i) {

}

@Override

public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

if(firstVisibleItem == 0){

View first_view = lsv_new_house.getChildAt(0);

if(first_view != null && first_view.getTop() == 0){

// LogUtils.e("已经滚动到顶部了");

bl_down = true;// 可以下拉刷新了

}else {

// LogUtils.e("还没到顶部");

bl_down = false;// 未滑动到顶部不让下拉刷新

}

}

if(firstVisibleItem + visibleItemCount == totalItemCount){

View last_view = lsv_new_house.getChildAt(lsv_new_house.getChildCount() - 1);

// LogUtils.e("height = " + lsv_new_house.getBottom());// 最后一个item的底部与listview第一个item顶部之间的距离

// int h = lsv_new_house.getHeight();

// LogUtils.e("h = " + h);

if(last_view != null && last_view.getBottom() == lsv_new_house.getHeight()){

// LogUtils.e("已经滚动到最底部了");

bl_up = true;// 可以上拉加载了

}else {

// LogUtils.e("还没到底部");

bl_up = false;// 未滑动到底部不让上拉加载

}

}

}

});

}

代码都是很简单的,简单说一下。获取第一个item的view和最后一个item的view,并进行相应的判断即可。

而且这样判断会更加的精确,因为只要ListView中第一个item出现在屏幕上端,即使只出现一部分,firstVisibleItem 的值也依然为0, onScroll()回调就会发生; 同样ListView 的最后一个 item 即使只显示一部分,((firstVisibleItem + visibleItemCount) == totalItemCount) 的值也是等于totalItemCount。

但是加了距顶部的距离和整个listview的高度判断后,就可以做到精确的判断了。

以上这篇Android中判断listview是否滑动到顶部和底部的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

android列表滑到底部,Android中判断listview是否滑动到顶部和底部的实现方法相关推荐

  1. php volist中作判断,ThinkPHP模板中判断volist循环的最后一条记录的验证方法

    ThinkPHP模板中判断volist循环的最后一条记录的验证方法 对于用过smarty做过php开发的朋友来说,应该都知道在smarty模板里面判断foreach循环是否是最后一个可以用$smart ...

  2. 去除listView和recyclerview滑动到顶部和底部边界的阴影

    xml增加: android:overScrollMode="never" 去除ListView滑到顶部和底部时边缘的黑色阴影: android:fadingEdge=" ...

  3. android 上滑隐藏view,Android CoordinatorLayout + AppBarLayout(向上滚动隐藏指定的View)

    在新的Android Support Library里面,新增了CoordinatorLayout, AppBarLayout等. 实现的效果: 向下滚动RecylerView,Tab会被隐藏,向上滚 ...

  4. android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例

    Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...

  5. python检查列表是否为空_Python 中判断列表是否为空的方法

    在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么? 在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素. 我们可以把判断表达式可以分为两个阵营: ...

  6. recyclerview滑动到顶部和底部监听+上滑下滑监听

    到达顶部和底部监听 判断是否滑动到底部, recyclerView.canScrollVertically(1);返回false表示不能往上滑动,即代表到底部了: 判断是否滑动到顶部, recycle ...

  7. RecyclerView 判断滑动到顶部和底部

    可以使用系统提供的 canScrollVertically 方法来判断 具体如下 recycler_view.addOnScrollListener(new RecyclerView.OnScroll ...

  8. android右滑返回动画,Android仿微信右滑返回功能的实例代码

    先上效果图,如下: 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的),  这些可以实现onTouchEvent来实现. ...

  9. android 滑动到顶部或底部光影效果控制

    在android中,使用listview,scrollview,viewpager,或者RecycleView的时候,滑动到边界的时候,会有一个自动的光影效果,有时候不需要这种效果,只需要设置setO ...

最新文章

  1. 在熊市中厚积薄发 比特币现金加大基础设施、应用程序和协议创新力度
  2. Oculus推出近场HRTF和立体声源,将打造真正身临其境的VR体验
  3. 高校调课代课审批系统设计研究
  4. java web start error_java web start——启动文件错误,没法启动指定应用程序这个问题如何解决?谢谢...
  5. java对象复制到新对象_java – 使用新生成的ID将Hibernate复制对象值复制到新对象中...
  6. bootstrat 设置 select option 选项的值
  7. PTA-6-3 使用函数的选择法排序 (25分)(C语言)
  8. 通讯录 app 使用哪种协议查找服务器上存储的联系人?,uniapp通讯录查找
  9. simple_html_dom.php 使用 乱码处理作者:gaoming13
  10. 错误代码:ERR_UNSAFE_PORT
  11. 回溯算法讲解--适用于leetcode绝大多数回溯题目
  12. Qt编程之mapx组件编程
  13. VS连接VSS代码管理器失败问题
  14. swift野梦抄袭 taylor_断眉质疑Taylor Swift新歌抄袭《Next to Me》,双方粉丝掀起骂战...
  15. Mysql B+树索引的使用
  16. linux系统——窗口管理器和桌面环境的区别
  17. 【LeetCode】第289场单周赛 --- 用中等题来骗来偷袭我这个老同志?
  18. mysql快速复制数据库
  19. 软件理论基础学习笔记——模态逻辑(modal logic)
  20. 转载【数据集】计算机视觉,深度学习,数据挖掘数据集整理

热门文章

  1. CUDA学习日志:常量内存和纹理内存
  2. 如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
  3. [云炬创业基础笔记]第七张创业团队测试1
  4. [云炬创业基础笔记]第二章创业者测试18
  5. 第15课:卷积神经网络(CNN)
  6. GitHub 中文排行榜,高分优秀中文项目一网打尽!
  7. [scala-spark]5. 伴生类和伴生对象
  8. Siamese Network (应用篇1) :孪生网络特征用于图像匹配 ICPR2016
  9. VTK修炼之道45:图形进阶_vtkPolyData属性数据
  10. 小波的秘密2_MATLAB图像多尺度分析