ListView分页加载数据

作者: 哇楼主 | 来源:发表于2016-09-07 21:02 被阅读250次

    (一)、目的:

    Android 应用开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过
    分页的形式来展示数据,这样会有更好的用户体验。因此,很多应用都是采用分批次加载的形式来获取用户所需的数据。例如:微博客户端可能会在用户滑 动至列表底端时自动加载下一页数据,也可能在底部放置一个"查看更多"按钮,用户点击后,加载下一页数据。

    (二)、核心技术点:

    借助ListView组件的OnScrollListener监听事件,去判断何时该加载新数据;

    往服务器get传递表示页码的参数:page。而该page会每加载一屏数据后自动加一;

    利用addAll()方法不断往list集合末端添加新数据,使得适配器的数据源每新加载一屏数据就发生变化;

    利用适配器对象的notifyDataSetChanged()方法。该方法的作用是通知适配器自己及与该数据有关的view,数据已经发生变动,要刷新自己、更新数据。

    (三)、 OnScrollListener监听事件 :

    1、该监听器中有两个需要实现的方法:

    onScrollStateChanged(AbsListView view, int scrollState):监听屏幕的滚动状态的变动情况

    onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount,
    int totalItemCount):监听屏幕滚动的item的数量

    2、 scrollState 回调顺序如下:

    第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1):表示正在滚动。当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1

    第2次:scrollState =SCROLL_STATE_FLING(2) :表示手指做了抛的动作(手指离开屏幕前,用力滑了一下,屏幕产生惯性滑动)。

    第3次:scrollState =SCROLL_STATE_IDLE(0) :表示屏幕已停止。屏幕停止滚动时为0。

    3、 onScroll中参数讲解:

    firstVisibleItem:当前窗口中能看见的第一个列表项ID(从0开始)

    visibleItemCount:当前窗口中能看见的列表项的个数(小半个也算)

    totalItemCount:列表项的总数

    4、思路:

    当滚到最后一条,加载新数据;

    适配器的数据源要进行累加:totalList.addAll(list);

    数据发生变化,适配器通知:adapter.notifyDataSetChanged();【牢记】

    判断是否滚到最后一行。

    示例代码:

    if (firstVisibleItem + visibleItemCount ==
    totalItemCount ) {

    isBottom = true;

    }

    相关文章

      网友评论

        本文标题:ListView分页加载数据

        本文链接:https://www.haomeiwen.com/subject/yitsettx.html