`
TonySun3544
  • 浏览: 161423 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OnScrollListener回调分析

阅读更多

OnScrollListener回调分析

 

如果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) 停止滚动  
  
        //当滚到最后一行且停止滚动时,执行加载  
        if (isLastRow && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {  
            //加载元素  
            ......  
  
            isLastRow = false;  
        }  
    }  
}  
分享到:
评论

相关推荐

    OnSCrollListener 滚屏时候不加载数据

    当用户滚动视图时,该监听器会触发不同的回调方法,开发者可以在这个过程中实现一些特定功能,比如常见的无限滚动加载更多数据。然而,有时我们可能会遇到一个问题:在滚屏时数据并未按预期加载。本文将深入探讨这个...

    RecyclerViewHeaderAndFooter:RecyclerView添加头部和尾部,并添加上拉加载更多回调方法

    这篇内容将深入解析如何实现这个功能,以及如何添加上拉加载更多的回调方法。 首先,我们了解如何在RecyclerView中添加头部和尾部。在原生的RecyclerView中,我们通常只能展示一个简单的列表,但通过自定义适配器...

    InfiniteScroll,Android中RecyclerView的InfiniteScrollListener.zip

    InfiniteScrollListener是专门为RecycleView设计的监听器,当用户接近或达到RecycleView的底部时,它会触发一个回调事件。开发者可以在回调中处理加载更多数据的操作,比如网络请求或者本地数据的加载。 2. **实现...

    基于Android的ListView保持在列表的顶部固定View 案例分析 源码.zip

    同时,需要在onScrollStateChanged()中处理滚动停止时的回调,以便恢复正常的显示。 4. **自定义ListView**: 如果需要更精细的控制,可以考虑继承ListView并重写其onMeasure()和onLayout()方法,以实现自定义的...

    XListview实现上拉刷新下拉加载功能.zip

    通过分析`XListViewDemo`项目,开发者不仅可以学习如何实现上拉刷新和下拉加载功能,还可以了解自定义视图、数据适配器、事件监听、回调机制以及异步加载等相关知识,这对于提升Android开发技能大有裨益。...

    listview headview

    使用`headerView.setOnClickListener(new View.OnClickListener() {...})`为头部视图添加点击事件监听,然后在回调中执行相应的逻辑。 标签“listview”表明这个话题主要围绕ListView的使用和定制。ListView因其...

    Android-android标题栏随着RecyclerView滚动背景渐变

    这个监听器会在RecyclerView滚动时触发回调方法,从而让我们有机会根据滚动位置改变标题栏的背景颜色。 2. **计算滚动距离**:在滚动监听器的回调方法中,我们可以获取到当前滚动的距离(dy)以及RecyclerView的总...

    androidListView下拉刷新Demo

    下拉刷新的基本原理是监听ListView的滑动事件,当用户上滑到ListView顶部并继续下拉时,会触发一个特定的回调函数,通常是在AdapterView.OnScrollListener的onScrollStateChanged()或onScroll()方法中实现。在这个回...

    android-query 开发包

    AbstractAjaxCallback, LocationAjaxCallback> //本地位置信息回调 封装了本地手机gps、network确认手机位置信息 然后返回最新位置信息 public abstract class AbstractAQuery<T extends AbstractAQuery<T>> ...

    Android ListView分页功能源码.zip

    - **LoaderManager.LoaderCallbacks**:Android提供的加载器回调接口,用于在后台加载数据并更新UI。 5. **源码分析**: - `MainActivity.java`:主活动,可能包含了ListView的初始化、Adapter的设置以及...

    Android中ListView下拉刷新和上拉加载更多的实现

    SwipeRefreshLayout作为ListView的父容器,当用户下拉时会触发onRefresh()回调,开发者在此回调中执行数据刷新操作,并在数据加载完成后调用setRefreshing(false)来结束刷新状态。 步骤如下: 1. 在布局文件中添加...

    Android应用源码仿新浪微博下拉刷新继承FrameLayout.zip

    4. **回调接口**: 当用户停止滑动并达到触发刷新的阈值时,调用一个回调接口,通知应用执行实际的刷新操作。 5. **恢复原状**: 刷新完成后,动画返回到初始状态,隐藏下拉刷新头部。 此外,源码中可能还涉及到对`...

    android上下拉刷新Demo

    4. **处理回调**: 在`onRefresh()`和加载更多回调中,请求网络数据或加载本地数据,完成后调用` SwipeRefreshLayout`的`setRefreshing(false)`或通知`Adapter`更新数据。 5. **异常处理**: 对网络错误、数据为空等...

    Android下拉刷新控件(ListView好ScrollView版).zip

    当用户从顶部向下拖动这个子视图时,SwipeRefreshLayout会显示一个刷新指示器,并触发回调接口,开发者可以在回调中更新数据。其主要优点是兼容性好,易于集成。 2. **ListView的下拉刷新**:在ListView中,我们...

    安卓Android源码——PullToRefresh下拉刷新详细注释版.zip

    6. **回调接口**:为了在刷新完成后更新数据,通常会定义一个回调接口,让开发者在实现接口后可以处理数据加载逻辑。这样,PullToRefresh组件与实际的数据加载解耦,提高了代码的可复用性。 7. **性能优化**:在...

    Android ListView下拉刷新源码

    当滑动距离达到一定阈值时,它会回调onRefresh()方法,开发者可以在该方法中更新数据并重新加载ListView。 接下来,我们讨论“点击加载更多”功能。这个功能通常需要自定义ListView的适配器和ListView的...

    Android ListView反弹效果源码.rar

    这包括计算动画的持续时间、起始和结束值,以及更新视图状态的回调函数。 4. 视图状态更新:在动画过程中,需要更新ListView的顶部或底部视图的位置,使其看起来像是在反弹。 通过研究这份源码,你可以学到如何处理...

    Android Listview最完整最全面的滑动动画

    通过监听动画的更新回调,改变View的位置。 4. **状态判断**:为避免重复应用动画,需要检查当前项是否正在显示动画。这通常通过设置一个标记或者使用View的Tag来实现。 5. **滑动事件**:如果你希望在用户滑动...

    Android自定义上拉加载下拉刷新控件

    在`PullToRefreshListViewDemo`中,开发者可能已经将ListView嵌套在SwipeRefreshLayout中,并实现了相应的刷新回调接口,如`onRefresh()`,在这个方法里,通常会执行网络请求或数据更新的操作。 接下来是上拉加载更...

Global site tag (gtag.js) - Google Analytics