今天给大家讲讲android开发中比较常见的listView的下拉加载,其实也能够叫做分页加载。为何会有这个叫法呢?说说我的理解吧!
从字面上很好理解。当你滑动1个列表到底部的时候,这个时候就会出现正在加载的底部加载布局去加载更多的数据。这里拿微信作为1个例子,以下图所示:
如上图所示红色方框的部份就是底部的加载布局。从1定程度上这样做是必要的,为了优化用户的体验。你可以想一想,假设你点开微信的朋友圈的时候,如果没有做分页加载,那末你需要等待很久的时间才能够看到你和朋友发的1些状态。这是由于这个时候代码需要给服务器发送要求获得数据并显现这些数据。这个时候获得数据就成了最耗时的问题。为何这么说?如果没有分页加载的功能,那末,你肯定需要获得全部的数据,你可以想一想,好几年的数据,数据量可很多啊!发要求去获得这些数据并显现它们是会很耗时间的。所以分页加载就很好的解决了这个问题。你先获得其中的10几条数据并显现它们。当你1直从头阅读这10几条数据到结束的时候,这个时候再去加载更多的数据并显现它们。如上图所示,这样才是好的用户体验。
概念清晰后,具体实现的部份到了。这里实现微信的下拉加载效果(个人感觉很不错,简洁明了),大概需要以下几个步骤:
first — 首先构建下拉加载时的底部加载布局(这里命名为view_more)
second — 获得数据并给listView设置adapter;设置好adapter后,调用方法:listView.addFooterView(view_more);// TODO 添加底部记载布局再往listView的底部添加底部加载布局。最后对listView设置滑动监听器:listView.setOnScrollListener(this);// TODO listView这是滑动监听 并重写相干方法:
public void onScrollStateChanged(AbsListView view, int scrollState) {} 和 public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {} 这两个重写的方法1个是监听listView的滑动状态改变,另外一个是监听listView的滑动。
third — 当滑动监听设置好后,在重写的两个方法里面判断listView是不是滑动到底部并且停止滑动(即滑动状态为停止滑动)。如果此时满足这个条件,那末就加载更多的数据。数据加载完成后就刷新数据源,此时会有更多的数据在底部出现。
fourth — 最后当数据全部加载好后,移除第2步中添加的底部加载布局view_more,调用方法:listView.removeFooterView(view_more);// TODO 移除底部的加载布局
下面写代码1步1步来实现:
1、首先准备1个底部加载布局,命名为view_more
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#8888" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="正在加载..."
android:textSize="