HeaderView , FooterView 顶部底部的布局另做了解;
上拉刷新视频地址:http://www.tmooc.cn/player/index.shtml?courseId=ECA203008A814025AB881D0A236E16F6
http://www.tmooc.cn/player/index.shtml?courseId=ECA203008A814025AB881D0A236E16F6
1、将ListView数据源的加载修改成每次加载多少条消息的方法,将ListView内存处理细节文章中第二步中加载数据的方法改成此方法(方法中每次加载的下标是随机的,应写成第二步提到的方法的参数);
/**
* contacts[ ] 数组中存放着ListView的所有数据
* @param startIndex 起始下标/起始索引
*@param count 加载的数据的数量
*/
public static List<String>getContactsData(int startIndex,int coun){
List<String> data =new ArrayList<String>();
//从开始下标开始加载数据,当下标小于(起始下标+数量=结束下标)并且小于数据源总数量(不会出现下标越界),将
//数据元素添加到List集合
for(int i= starIndex;i < starIndex +cunt && i< contacts.length;i++){
data.add(i+" -"+contacts[ i ]);
}
return data;
}
2、利用ListView的滚动监听事件处理滑动事件(OnScrollListener)
//onCreate中调用ListView的滑动监听器类的实现
listView.setOnScrollListener(new InnerOnScrollListener());
//全局变量用来判断ListView是否处于加载状态
private boolean isLoading;
//OnScrollListener 方法类的实现
private class InnerOnScrollListener implements AbsListView.OnScrollListener {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {
//加载数据的条件
//1、已显示到最后一条数据
//2、仍有数据可以被加载
//3、未处于加载状态
//4、ListView已经显示数据
if(listView.getLastVisiblePosition() >= i2-1
&& i2< contacts.length
&& !isLoading
&& i2>0){
isLoading=true;
//在ListView内存处理细节文章中第三步中数据处理完后再将他设为false
//将写好的FooterView 加载出来;另外同上在数据处理完后删除FooterView
/*
调用ListView内存处理细节文章中第二步中写的加载数据的方法。此前该方法以改成
需要传入加载下标的参数在此处传入的参数 i2
*/
}
}
}
ListView内存处理细节
https://blog.csdn.net/hadkfhkdh/article/details/82145044