PullToRefresh是目前实现比较好的下拉刷新的类库,下载地址:https://github.com/chrisbanes/Android-PullToRefresh。
支持自顶部向下拉动,并从底部拉起(或两者兼有)。
滚动支持在Android 2.1 +设备。
目前适用于:
- ListView
- ExpandableListView
- GridView
- WebView
- ScrollView
- HorizontalScrollView
- ViewPager
下面介绍下ListView的用法,其他控件类似。
1、布局文件:activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_refresh_list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
</LinearLayout>
2、 要实现下拉刷新的功能很简单,只需要实现OnRefreshListener的OnRefresh方法即可,但是想要判断是下拉刷新还是上拉加载更多,需要在PullToRefresh的类库的com.handmark.pulltorefresh.library包下,打开PullToRefreshBase.java。添加如下所示的二个方法:
public boolean isHeaderShown(){
return getHeaderLayout().isShown();
}
public boolean isFooterShown(){
return getFooterLayout().isShown();
}
3、Activity调用方法如下:
mPullRefreshListView = (PullToRefreshListView) rootView.findViewById(R.id.pull_refresh_list); //设置支持下拉刷新和上拉加载更多
mPullRefreshListView.setMode(Mode.BOTH);
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
if(refreshView.isHeaderShown()){
//处理下拉刷新的业务
new GetDataTask().execute();
}else{
//处理上拉加载更多的业务
new GetMoreDataTask().execute();
}
}
});