pulltorefresh算是一个常用且强大的上拉刷新下拉加载库,我们今天来探讨一下它的细节
它的原理:在View中有一个scrollTo方法,可以将整个View移动到指定的位置,PullToRefresh就是重写了onTouchEvent方法来检测用户滑动的偏移距离,然后用滑动距离调用scrollTo方法来实现整个View的上下左右移动的。
它的使用:
<com.jmt.pullrefresh.PullToRefreshListView
android:id="@+id/lvListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@color/backgroundcolor"
android:listSelector="@android:color/transparent"
android:dividerHeight="1px"
android:scrollbars="none"
android:fadingEdge="none" >
</com.jmt.pullrefresh.PullToRefreshListView>
1、首先:设置他的mode,上拉下拉都可以
listView.setMode(Mode.BOTH);
listView.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
pageIndex=1;
//下拉刷新
getData(1);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//上拉加载
pageIndex++;
getData(2);
}
});
如果只下拉
//只下拉
listView.setMode(Mode.PULL_FROM_START);
//只上拉
listView.setMode(Mode.PULL_FROM_END);
item点击事件:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//这里是因为pulltorefrsh的header算一个item,所以自己用的时候 要-1
int position=arg2-1;
}
});
最后:
if(listView.isRefreshing()){
//加载header或footer隐藏
listView.onRefreshComplete();
}
还有一点:就是下拉刷新的时候 getData完成网络操作后,再去 data.clear(); data=新的数据
如果在下拉刷新回调方法里面清楚数据则会只显示一条数据
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView)