github上有个demo,android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新。地址在这里:
https://github.com/chrisbanes/Android-PullToRefresh
它里面每种方法基本遵循这种规律:
1.建立监听器(回调接口)
2.在回调的时候实现new GetDataTask().execute()方法
现在我把Listview的GetDataTask方法贴出来,其余的可以自己去看,不难
private class GetDataTask extends AsyncTask<Void, Void, String[]> {
@Override
protected String[] doInBackground(Void... params) {
// Simulates a background job.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
return mStrings;
}
@Override
protected void onPostExecute(String[] result) {
mListItems.addFirst("Added after refresh...");
mAdapter.notifyDataSetChanged();
// Call onRefreshComplete when the list has been refreshed.
mPullRefreshListView.onRefreshComplete();
super.onPostExecute(result);
}
}
GetDataTask先暂停一秒,然后给adapter相关联的mListItems添加数据(相当于修改了adapter里面的数据)
但是整个工程有一个问题,以PullToRefreshListActivity.java为例:
setOnRefreshListener里面可以有两种参数类型:new OnRefreshListener()和new OnRefreshListener2()。
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(
// 下拉刷新
}
});
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
// 等效于上面的onRefresh方法,可以调用
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
/**
* 不知道为什么就算拉到listview的底部这里依然不会调用
* 但是,在PullToRefreshListActivity.java里面却可以调用
* 不过参数是PullToRefreshBase<GridView> refreshView
*/
Toast.makeText(PullToRefreshListActivity.this,"onPullUpToRefresh", Toast.LENGTH_SHORT).show();
}
);
不过通常在项目里面不会这么用吧,毕竟还要增加一大堆的库文件,直接setOnScrollListener+addFooterView会更直观些,我之前写过
http://blog.csdn.net/lxj1137800599/article/details/51007062