判断listview的滚动状态及在滚动中item显示位置的方法

本文介绍了如何在Android中扩展ListView并实现OnScrollListener,以判断ListView的滚动状态,包括SCROLL_STATE_IDLE、SCROLL_STATE_TOUCH_SCROLL和SCROLL_STATE_FLING。同时,文章讲解了如何在滚动过程中确定第一个和最后一个Item是否完全显示,从而检测是否滑动到顶部或底部。通过监听滚动状态和位置,可以精确识别用户操作和ListView的惯性滚动。
摘要由CSDN通过智能技术生成
在写listview的下拉刷新和上拉加载时,会遇到如下问题:
怎样判断listview滑动到了顶部或是底部?
下拉刷新时,一般只有当第一个item完全可见时,才处理下拉的逻辑,而上拉加载则处理方式比较多,可以在手指已经离开屏幕但listview由于惯性作用滑动到底部时自动加载,也可以在最底部显示一个按钮,点击加载,加载完成后,又将按钮置于新加载内容的最底部,还可以在最后一个item完全可见时处理手指滑动上拉的逻辑来进行加载,等等。
那么,再细化一点,第一个item完全可见和能见到一部分、最后一个item完全可见和仅仅能见到一部分分别需要怎么判断?如果一个listview的item数目很少,都不足以充满整个屏幕,显然第一个和最后一个item都是完全可见的,这时候,还需要处理下拉和上拉的逻辑?如果(不)需要,又该如何判断?本文将对listview的item显示状态做个简单总结,相信除了应用于下拉刷新和上拉加载之外,还会有其他价值。
demo非常简单,就是一个listview界面,主要来看自定义的HwgtListView这个类:
HwgtListView.java:
[java]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. public class HwgtListView extends ListView implements OnScrollListener {  
  2.     public HwgtListView(Context context, AttributeSet attrs) {    
  3.         super(context, attrs);   
  4.         setOnScrollListener(this);   
  5.      }  
  6.     @Override  
  7.     public void onScrollStateChanged(AbsListView view, int scrollState) {  
  8.         switch (scrollState) {  
  9.             case OnScrollListener.SCROLL_STATE_IDLE:  
  10.                 Log.d("HWGT"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值