1-PullToRefresh使用刷新后,如果立即调用onRefreshComplete(),onRefreshComplete()会运行失效,下拉刷新的进度状态并不会消失,一直处于刷新状态.
解决办法:延迟调用onRefreshComplete();
ptrListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
// 下拉刷新
//这里要延迟执行ptrListView.onRefreshComplete()方法,如果立马执行onRefreshComplete()
//会导致onRefreshComplete()执行失效,ptrListView停留在刷新状态
new Handler().postDelayed(new Runnable(){
public void run() {
//execute the task
}
}, 1000);
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
// 上拉加载更多
new Handler().postDelayed(new Runnable(){
public void run() {
//execute the task
}
}, 1000);
}
});
2-PullToRefreshListView在使用时,在xml的布局文件中,小心使用android:visibility=”gone”;
同时PullToRefreshListView父布局的height设置成match_parent
以上因素可能导致PullToRefreshListView在适配数据后不能正常显示
3-使用PullToRefreshWebView库的时候,在android6.0上
PullToRefreshWebView中的FloatMath.floor()不能继续使用,其中floor会要报错
protected boolean isReadyForPullEnd() {
float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight());
}
解决办法:
Android6.0中使用 Math.floor 代替 FloatMath.floor ;
4-给PullToRefreshListView添加下拉刷新监听的时候,OnRefreshListener2会调用失败,原因是自动导包的时候导的是OnRefreshListener,OnRefreshListener2需要手动导包:
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
5-如果PullToRefreshListView要进行长按,则先要通过
PullToRefreshListView.getRefreshableView().setOnItemLongClickListener(this);
来进行长按监听,不能用原生ListView的OnItemLongClickListener方法
6-以下两个属性需要特别说明以下:
ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。
ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。此设置如果为false,在mPullRefreshListView上拉刷新的时候,新添加入的值不会立即显示在mPullRefreshListView的尾部,需要下拉后再上拉才能显示,故一般该值设置为true。
PS:
PullToRefreshListView的具体使用和案例示例,可参考鸿洋的博客
http://blog.csdn.net/lmj623565791/article/details/38238749