我用的上拉刷新,下拉加载是PullToRefresh
先介绍介绍PullToRefresh的使用
xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ptr="http://schemas.android.com/apk/res/包名"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f3f3f3"
android:orientation="vertical" >
<include layout="@layout/home_title" />
<cn.zero.android.common.view.pulltorefresh.PullToRefreshListView
android:id="@+id/lv_mine"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
android:scrollbars="@null"
ptr:ptrMode="both"
/>
</LinearLayout>java:
lv_classify.setOnRefreshListener(new OnRefreshListener2() {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
// TODO Auto-generated method stub
//下拉刷新
}
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
// TODO Auto-generated method stub
//上拉加载更多
}
});
//强制停止刷新
lv_fgt_all.onRefreshComplete();
第一步:
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
// TODO Auto-generated method stub
p++;
//请求接口有一个页数参数,每上拉一次增加1
break;
default:
break;
}
}第二步:
if (p == 1) {
//如果p=1(第一页),返回请求结果,把解释好的数据添加到列表里(网络请求方式,解析方式自己定)
lv_fgt_all.setAdapter(adapter);
} else {
if (map.get("data").equals("[]")) {
//解析到的数据如果是最后一页提示
Toast.makeText(getActivity(), "已经是最后一页,没有数据了", Toast.LENGTH_SHORT).show();
} else {
//否则添加到dataMap中
ArrayList<Map<String, String>> dataMap = JSONUtils.parseKeyAndValueToMapList(map.get("data"));
dataMap.addAll(dataMap); //把数据传给adapter里的setNotify方法刷新列表 adapter.setNotify(dataMap);
}
}
//BaseAdapter里的刷新列表
public void setNotify(ArrayList<Map<String, String>> dataMap){
this.dataMap = dataMap;
notifyDataSetChanged();
}其实就三句话,
如果是第一页,直接更新列表
如果不是第一页,就把adapter里的方法添加到ArrayList中,再刷新列表
如果是最后一页,提示。
537

被折叠的 条评论
为什么被折叠?



