A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、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;
}
























0 个回复

您需要登录后才可以回帖 登录 | 加入黑马