从网络获取数据,分三种情况:
1. 打开界面初次获取数据
2. 下拉刷新获取数据
3. 上拉加载获取更多数据
示例代码片段:
void loadData() {
// 定义回调处理
CallBackAdapter callBack = new CallBackAdapter() {
@Override
public void onBegin() {
showWaitView();
hideRefreshView();
}
@Override
public void onComplete(IVideoResult result) {
// 加载数据
if(result.isSuccess()) {
List<VideoItemData> items = ((TodayRankResult)result).getData();
if(isPullUp) {
if(items.size() != 0)
data.addAll(items);
else
UIUtils.showToast(context, "亲,没有更多数据了。");
}
else {
data = items;
}
dataAdapter.notifyDataChanged(data);
} else {
UIUtils.showToast(context, getString(R.string.load_fail_tray_again_later));
}
hideWaitView();
// 结束上拉刷新
if(isPullDownRefresh) {
pullToRefreshView.onHeaderRefreshComplete();
isPullDownRefresh = false;
// 滚动到ListView顶部
listView.setSelection(listView.getTop());
}
// 结束下拉加载更多
if(isPullUp) {
pullToRefreshView.onFooterRefreshComplete();
isPullUp = false;
// 滚动到ListView底部
listView.setSelection(listView.getBottom());
}
}
};
// 请求获取数据
Map<String, String> params = new HashMap<String, String>();
if(isPullUp)
params.put("offset", ""+data.size());
IVideoFetcher.doGet(TodayRankResult.class, callBack, IVideoURL.TvieURL.TODAY_RANK_URL, params);
}