Android 9 图标自动刷新,Android-PullToRefresh 进入自动刷新 终极解决方法

最近打算自己写一个框架,于是就用volley+Android-PullToRefresh  ,但是使用Android-PullToRefresh  想实现进入页面自动实现下拉刷新 mPullRefreshListView.setRefreshing(true);  一直没有效果,在网上看了看 ,很多人说view 还没有生成,所以没有效果,才去延时下拉就有效果

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

mPullRefreshListView.setRefreshing();

}

}, 3000);

添加此代码后发现,时间很难控制,效果很差。

故自己研究一下:

@Override

public final void setRefreshing(boolean doScroll) {

if (!isRefreshing()) {

setState(State.MANUAL_REFRESHING, doScroll);

}

}

final void setState(State state, final boolean... params) {

mState = state;

if (DEBUG) {

Log.d(LOG_TAG, "State: " + mState.name());

}

switch (mState) {

case RESET:

onReset();

break;

case PULL_TO_REFRESH:

onPullToRefresh();

break;

case RELEASE_TO_REFRESH:

onReleaseToRefresh();

break;

case REFRESHING:

case MANUAL_REFRESHING:

onRefreshing(params[0]);

break;

case OVERSCROLLING:

// NO-OP

break;

}

// Call OnPullEventListener

if (null != mOnPullEventListener) {

mOnPullEventListener.onPullEvent(this, mState, mCurrentMode);

}

}

protected void onRefreshing(final boolean doScroll) {

if (mMode.showHeaderLoadingLayout()) {

mHeaderLayout.refreshing();

}

if (mMode.showFooterLoadingLayout()) {

mFooterLayout.refreshing();

}

if (doScroll) {

if (mShowViewWhileRefreshing) {

// Call Refresh Listener when the Scroll has finished

OnSmoothScrollFinishedListener listener = new OnSmoothScrollFinishedListener() {

@Override

public void onSmoothScrollFinished() {

callRefreshListener();

}

};

switch (mCurrentMode) {

case MANUAL_REFRESH_ONLY:

case PULL_FROM_END:

smoothScrollTo(getFooterSize(), listener);

break;

default:

case PULL_FROM_START:

smoothScrollTo(-getHeaderSize(),listener);

break;

}

} else {

smoothScrollTo(0);

}

} else {

// We're not scrolling, so just call Refresh Listener now

callRefreshListener();

}

}

断点后发现,刚进入页面是View 未生成 ,-getHeaderSize()==0 所以没有下滑, 自然而然,只要-给etHeaderSize()正确的值,下拉刷新自然可以完成,所以添加此逻辑

smoothScrollTo((-getHeaderSize()==0)?(-loadingSize):(-getHeaderSize()), listener);   即可,loadingSize自己算即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值