黑马程序员技术交流社区
标题:
技术分享,Android-ListView分页
[打印本页]
作者:
psuugdufnm
时间:
2016-4-13 14:31
标题:
技术分享,Android-ListView分页
一、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;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2