ListView分页加载数据

(一)、目的:

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分页加载数据)