listview加载刷新加载更多的逻辑

来源:互联网 发布:sql查询所有表 编辑:程序博客网 时间:2024/05/20 16:44
1、三种网络请求方式
private static final int REQ_FIRST_GET = 0;
private static final int REQ_PULL_TO_REFRESH = 1;
private static final int REQ_SCROLL_TO_REFRESH = 2;


2、请求控制码
mReqCode 


3、界面逻辑
(1)加载数据之前,先显示蒙版
(2)用户离线,显示离线提示


4、网络请求的处理逻辑
(1)第一步:判断是否有网络,有网络则进入网络请求,没有网络,则显示提示
REQ_FIRST_GET :
mLoadingCover.onFailed();
REQ_PULL_TO_REFRESH :
mPullList.getLoadingLayoutProxy(true, false).setRefreshingStatus(ILoadingLayout.REFRESHING_STATUS_FAILED);
REQ_SCROLL_TO_REFRESH:
mFooterView.stopLoading(Define.MSG_NULL_CONNECT);


(2)网络请求返回
(2.1)失败
REQ_FIRST_GET :
mLoadingCover.onFailed();
REQ_PULL_TO_REFRESH :
mPullList.getLoadingLayoutProxy(true, false).setRefreshingStatus(ILoadingLayout.REFRESHING_STATUS_FAILED);
REQ_SCROLL_TO_REFRESH:
mFooterView.stopLoading(Define.MSG_LOAD_FAILED_LOAD_AGAIN);
(2.2)成功
ret == 0
REQ_FIRST_GET ,REQ_PULL_TO_REFRESH
解析数据,到tempdata中,handler发送(清空+刷新)
REQ_SCROLL_TO_REFRESH
解析数据,到tempdata中,handler发送(刷新)


更新ui
ret == 0:
REQ_FIRST_GET :
mLoadingCover.onfinish()
判断数据和limit的值,设置footerview的显示和可点击
REQ_PULL_TO_REFRESH :
mPullList.getLoadingLayoutProxy(true, false).setRefreshingStatus(ILoadingLayout.REFRESHING_STATUS_Ok);
判断数据和limit的值,设置footerview的显示和可点击
REQ_SCROLL_TO_REFRESH:
判断数据和limit的值,设置footerview的显示和可点击


ret == 2:
REQ_FIRST_GET :
loadingcover.onfaile()
显示离线
REQ_PULL_TO_REFRESH :
listview设置失败
显示离线
REQ_SCROLL_TO_REFRESH:
设置失败
显示离线
ret == 4:
REQ_FIRST_GET :
loadingcover.onfaile()提示暂无数据

REQ_PULL_TO_REFRESH :
listview设置失败

REQ_SCROLL_TO_REFRESH:
设置无更多数据

0 0