在工作中中使用 PullToRefreshListView时碰到一个问题。。屏幕创建的时候PullToRefreshListView.setRefreshing();不会回掉监听器的下拉更新方法
这个需要改动 PullToRefreshBase (line 782)
case PULL_FROM_START:
if (getHeaderSize() == 0) { //开始时getHanderSize的大小等于0
smoothScrollToDelay(listener);
} else {
smoothScrollTo(-getHeaderSize(), listener);
}
break;
if (getHeaderSize() == 0) { //开始时getHanderSize的大小等于0
smoothScrollToDelay(listener);
} else {
smoothScrollTo(-getHeaderSize(), listener);
}
break;
}
private void smoothScrollToDelay(final OnSmoothScrollFinishedListener listener) {
//final View v = mHeaderLayout.getInnerLayout();
mHeaderLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int size = getHeaderSize();
//Log.i("tag", "size==>"+size);
if (size == 0) {
return false;
}
smoothScrollTo(-size, listener);
mHeaderLayout.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
}
//final View v = mHeaderLayout.getInnerLayout();
mHeaderLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int size = getHeaderSize();
//Log.i("tag", "size==>"+size);
if (size == 0) {
return false;
}
smoothScrollTo(-size, listener);
mHeaderLayout.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
}
本文介绍了解决PullToRefreshListView在初始化时无法触发下拉刷新监听器的问题。通过修改PullToRefreshBase源码,在特定条件下延迟平滑滚动到头部,确保了下拉更新方法能够正确回调。

被折叠的 条评论
为什么被折叠?



