1.在GitHub上下载PushToRefreshLibrary
2.将开源框库PushToRefreshLibrary导入项目并add library
3.具体代码调用可参考一下文件
主文件:AllJobListActivity.java
public class AllJobListActivity extends BaseActivity implements OnItemClickListener,PullToRefreshBase.OnRefreshListener2<ListView>{
private PullToRefreshListView mPullToRefreshListView;
private PublicJobInfoListAdapter mJobInfoListAdapter;
private Activity context;
private View mNoDataView;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.all_job_list);
setTitle(R.string.platform_job_button_text);
context = this;
initView();
}
private void initView() {
// TODO Auto-generated method stub
mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.job_list_listview);
mNoDataView = getLayoutInflater().inflate(R.layout.no_data_view, null);
mJobInfoListAdapter = new PublicJobInfoListAdapter(context, null);
//RefreshListView设置
mPullToRefreshListView.setEmptyView(mNoDataView);
mPullToRefreshListView.setMode(Mode.BOTH);
mPullToRefreshListView.setOnRefreshListener(this);
mPullToRefreshListView.setOnItemClickListener(this);
mPullToRefreshListView.setRefreshing(true);
}
//重新加载数据
private void allJob() {
// TODO Auto-generated method stub
RequestParams params = new RequestParams();
params.put("page_size",Constant.PAGE_SIZE);
params.put("page_index", mJobInfoListAdapter.getPageNumber());
RestClient.post(Constant.ALL_JOB_LIST, params, new AsyncHttpResponseHandler(context, new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) {
// TODO Auto-generated method stub
super.onSuccess(statusCode, headers, response);
try {
if (response.getInt("msg_code") == Constant.CODE_SUCCESS) {
String str = null;
JSONArray data = null;
data = response.getJSONArray("data");
ArrayList<JobInfo> mJobList = JobPublicJSONConvert.convertJsonArrayToItemList(data);
if (mJobInfoListAdapter.getPageNumber() == 1) {
mJobInfoListAdapter.setDataSource(mJobList);
mPullToRefreshListView.setAdapter(mJobInfoListAdapter);
} else {
mJobInfoListAdapter.appendDataSource(mJobList);
}
mJobInfoListAdapter.incPageNumber();
} else {
String msg = response.getString("msg");
ToastUtil.make(context).show(msg);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
mPullToRefreshListView.onRefreshComplete();
super.onFinish();
}
}));
}
//下拉刷新
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
// TODO Auto-generated method stub
String label = DateUtils.formatDateTime(context,
System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
mJobInfoListAdapter.setPageNumber(1);
allJob();
}
//上翻刷新
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
// TODO Auto-generated method stub
String label = DateUtils.formatDateTime(context,
System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
allJob();
}
//列表项被点击
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
// TODO Auto-generated method stub
Intent intent = new Intent(AllJobListActivity.this, AllJobInfoListActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("job_id", mJobInfoListAdapter.getItemDataSource(position-1).getmId());
bundle.putInt("all", 1);
intent.putExtras(bundle);
startActivity(intent);
}
}
JobInfoListAdapter.java文件:
public class JobInfoListAdapter extends BaseAdapter{
private ArrayList mJobList;
private int mPageNumber = 1;
private Activity mContext;
public JobInfoListAdapter(Activity context,ArrayList jobList){
mJobList = jobList;
mContext = context;
}
//较普通adapter新增
public void setDataSource(ArrayList jobList) {
this.mJobList = jobList;
notifyDataSetChanged();
}
public void removeAll(){
mJobList.clear();
notifyDataSetChanged();
}
public ArrayList<JobInfo> getDataSource(){
return mJobList;
}
public void removeDataSource(int position) {
mJobList.remove(position);
notifyDataSetChanged();
}
public void appendDataSource(ArrayList<JobInfo> jobList) {
mJobList.addAll(jobList);
notifyDataSetChanged();
}
public JobInfo getItemDataSource(int position) {
return this.mJobList.get(position);
}
public synchronized int incPageNumber() {
return ++mPageNumber;
}
public synchronized void setPageNumber(int pageNumber) {
mPageNumber = pageNumber;
}
public int getPageNumber() {
return mPageNumber;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mJobList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mJobList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = mContext.getLayoutInflater().inflate(R.layout.item_job_list, null);
viewHolder.mImageView = (RoundSmartImageView) convertView.findViewById(R.id.job_list_photo);
viewHolder.role = (TextView) convertView.findViewById(R.id.role);
viewHolder.certificationStatus = (TextView) convertView.findViewById(R.id.certification_status);
viewHolder.addressPic = (ImageView) convertView.findViewById(R.id.address_pic);
viewHolder.address = (TextView) convertView.findViewById(R.id.address);
viewHolder.money = (TextView) convertView.findViewById(R.id.money);
viewHolder.style = (TextView) convertView.findViewById(R.id.style);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
JobInfo job = mJobList.get(position);
SmartImage image = null;
viewHolder.mImageView.setImageUrl(job.getmImageUrl(),R.drawable.ic_launcher);
viewHolder.role.setText(job.getRole());
viewHolder.certificationStatus.setText(job.getCertificationStatus());
viewHolder.addressPic.setImageResource(R.drawable.fix_position_img);
viewHolder.address.setText(job.getAddress());
viewHolder.money.setText(String.valueOf(job.getMoney()));
viewHolder.style.setText(job.getStyle());
return convertView;
}
final private class ViewHolder {
RoundSmartImageView mImageView;
TextView role;
TextView certificationStatus;
ImageView addressPic;
TextView address;
TextView money;
TextView style;
}
}
“`