package com.andbase.demo.activity;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.ab.fragment.AbFragment;
import com.ab.http.AbHttpListener;
import com.ab.http.AbRequestParams;
import com.ab.util.AbToastUtil;
import com.ab.view.pullview.AbPullToRefreshView;
import com.ab.view.pullview.AbPullToRefreshView.OnFooterLoadListener;
import com.ab.view.pullview.AbPullToRefreshView.OnHeaderRefreshListener;
import com.andbase.R;
import com.andbase.demo.adapter.ArticleListAdapter;
import com.andbase.demo.model.Article;
import com.andbase.global.MyApplication;
import com.andbase.web.NetworkWeb;
public class FragmentRefresh extends AbFragment {
private MyApplication application;
private Activity mActivity = null;
private List<Article> mList = null;
private AbPullToRefreshView mAbPullToRefreshView = null;
private ListView mListView = null;
private int currentPage = 1;
private ArticleListAdapter myListViewAdapter = null;
private int total = 50;
private int pageSize = 5;
@Override
public View onCreateContentView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mActivity = this.getActivity();
application = (MyApplication) mActivity.getApplication();
View view = inflater.inflate(R.layout.pull_to_refresh_list, null);
//获取ListView对象
mAbPullToRefreshView = (AbPullToRefreshView)view.findViewById(R.id.mPullRefreshView);
mListView = (ListView)view.findViewById(R.id.mListView);
//设置监听器
mAbPullToRefreshView.setOnHeaderRefreshListener(new OnHeaderRefreshListener() {
@Override
public void onHeaderRefresh(AbPullToRefreshView view) {
refreshTask();
}
});
mAbPullToRefreshView.setOnFooterLoadListener(new OnFooterLoadListener() {
@Override
public void onFooterLoad(AbPullToRefreshView view) {
loadMoreTask();
}
});
//设置进度条的样式
mAbPullToRefreshView.getHeaderView().setHeaderProgressBarDrawable(this.getResources().getDrawable(R.drawable.progress_circular));
mAbPullToRefreshView.getFooterView().setFooterProgressBarDrawable(this.getResources().getDrawable(R.drawable.progress_circular));
//ListView数据
mList = new ArrayList<Article>();
//使用自定义的Adapter
myListViewAdapter = new ArticleListAdapter(mActivity, mList);
mListView.setAdapter(myListViewAdapter);
//item被点击事件
mListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
//加载数据必须
this.setAbFragmentOnLoadListener(new AbFragmentOnLoadListener(){
@Override
public void onLoad() {
//第一次下载数据
refreshTask();
}
});
return view;
}
@Override
public void setResource() {
//设置加载的资源
this.setLoadDrawable(R.drawable.ic_load);
this.setLoadMessage("正在查询,请稍候");
this.setRefreshDrawable(R.drawable.ic_refresh);
this.setRefreshMessage("请求出错,请重试");
}
/**
* 下载数据
*/
public void refreshTask() {
currentPage = 1;
// 绑定参数
AbRequestParams params = new AbRequestParams();
params.put("cityCode", "11");
params.put("pageSize", String.valueOf(pageSize));
params.put("toPageNo",String.valueOf(currentPage));
// 下载网络数据
NetworkWeb web = NetworkWeb.newInstance(mActivity);
web.findLogList(params, new AbHttpListener(){
@Override
public void onSuccess(List<?> newList) {
mList.clear();
if(newList!=null && newList.size()>0){
mList.addAll((List<Article>)newList);
myListViewAdapter.notifyDataSetChanged();
newList.clear();
}
mAbPullToRefreshView.onHeaderRefreshFinish();
//模拟用,真是开发中需要直接调用run内的内容
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//显示内容
showContentView();
}
}, 3000);
}
@Override
public void onFailure(String content) {
AbToastUtil.showToast(mActivity, content);
//显示重试的框
showRefreshView();
}
});
}
public void loadMoreTask(){
currentPage++;
// 绑定参数
AbRequestParams params = new AbRequestParams();
params.put("cityCode", "11");
params.put("pageSize", String.valueOf(pageSize));
params.put("toPageNo",String.valueOf(currentPage));
// 下载网络数据
NetworkWeb web = NetworkWeb.newInstance(this.getActivity());
web.findLogList(params, new AbHttpListener(){
@Override
public void onSuccess(List<?> newList) {
if(newList!=null && newList.size()>0){
mList.addAll((List<Article>)newList);
myListViewAdapter.notifyDataSetChanged();
newList.clear();
}
mAbPullToRefreshView.onFooterLoadFinish();
}
@Override
public void onFailure(String content) {
}
});
}
}