OnScrollListener回调分析

转载 2015年11月21日 12:45:23

转载自:http://www.cnblogs.com/tt_mc/archive/2012/10/10/2718333.html

如果adapter中的数据量很大的时候,在加载listview时会出现卡顿的现象。这是会让用户抓狂!最好的解决办法就是先加载一定数量的数据,然后在最下方提示正在加载! 
动态加载就是把放入adapter中的数据分好几次加载。在用户拖动listview时再加载一定的数据,和sina微博的客户端类似。 
给listview添加OnScrollListener监听事件默认会覆盖下面两个方法:

new OnScrollListener() {    
        boolean isLastRow = false;    
        
        @Override    
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {    
            //滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。    
            //firstVisibleItem:当前能看见的第一个列表项ID(从0开始)    
            //visibleItemCount:当前能看见的列表项个数(小半个也算)    
            //totalItemCount:列表项共数    
        
            //判断是否滚到最后一行    
            if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount > 0) {    
                isLastRow = true;    
            }    
        }    
        @Override    
        public void onScrollStateChanged(AbsListView view, int scrollState) {    
            //正在滚动时回调,回调2-3次,手指没抛则回调2次。scrollState = 2的这次不回调    
            //回调顺序如下    
            //第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1) 正在滚动    
            //第2次:scrollState = SCROLL_STATE_FLING(2) 手指做了抛的动作(手指离开屏幕前,用力滑了一下)    
            //第3次:scrollState = SCROLL_STATE_IDLE(0) 停止滚动                          //当屏幕停止滚动时为0;当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1;  
            //由于用户的操作,屏幕产生惯性滑动时为2  
        
            //当滚到最后一行且停止滚动时,执行加载    
            if (isLastRow && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {    
                //加载元素    
                ......    
        
                isLastRow = false;    
            }    
        }    
    }


相关文章推荐

listView的OnScrollListener回调分析

本文将详细解释下OnScrollListener中的两个方法的调用情况 public void onScroll(AbsListView view, int firstVisibleI...

OnScrollListener回调分析

来源:http://www.cnblogs.com/tt_mc/archive/2012/10/10/2718333.html
  • ruyi366
  • ruyi366
  • 2014年08月21日 18:43
  • 386

OnScrollListener回调分析

*********************************************** 转载:http://www.cnblogs.com/tt_mc/archive/2012/10/10/...

使用OnScrollListener回调处理自动加载更多

首先来分析下OnScrollListener的回调, new OnScrollListener() { boolean isLastRow = false; ...

Android中OnScrollListener回调具体剖析

new OnScrollListener() { boolean isLastRow = false; @Override public void onScroll(AbsListView vi...

Android 关于 OnScrollListener 事件顺序次数的简要分析

在 Android 的 OnScrollListener 整个事件我主要分析下他的执行顺序: 实现滚动事件的监听接口 new AbsListView.OnScrollListener(){ ...

Picasso使用Target无法回调的分析与解决

在加载图片的场景中,有时需要异步拿到Bitmap做一些操作:bitmap预热、bitmap裁剪等,当加载成功的时候通过回调的形式来获取Bitmap,然后进行处理。Picasso提供了一种回调的方式获取...

代理回调分析和OC实现

代理模式是一种很重要的设计模式,它的核心思想是通过代理接口分离使用者和服务提供者,降低了模块之间的耦合度。在实际中灵活使用代理模式可以让我们写出更优质的模块结构的代码。那么代理模式具体是怎么样实现的呢...
  • lxz5705
  • lxz5705
  • 2015年08月15日 18:33
  • 75

android源码分析——从button的点击事件看回调机制

在Android中到处可见接口回调机制,尤其是UI事件处理方面。熟悉回调机制之后,我们就可以利用这个机制为自定义组件创建我们自己的事件监听接口和回调方法。...
  • tyhj_sf
  • tyhj_sf
  • 2016年03月22日 10:10
  • 691

ARM架构kprobe应用及实现分析(10 trap中断注册及回调)

首先可以看下探测点检测到非法指令时候,产生中断的dump_stack: symbol] (dump_backtrace+0x0/0x10c) from [] (dump_stack+0x18/0x1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OnScrollListener回调分析
举报原因:
原因补充:

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