PullToRefreshView自动向下刷新

最近项目中用到了下拉刷新,找了一个比较好用的第三方库PullToRefresh_library,点击打开链接。在使用过程中遇到了需要自动出现刷新状态(而不是手动向下滑动)的需求,在网上找到了两种方法:

第一种是官方api提供的 public final void setRefreshing() 方法,使用过后发现没作用。

第二种是网上说的

new Handler().postDelayed(new Runnable() {
 
        @Override
        public void run() {
        <span style="white-space:pre">	</span>mPullToRefreshScrollView.setRefreshing();
        }
}, 3000);
这种方法我没试过,网上是说还未获取到头部刷新布局的高度,不过延迟时间根据手机而异。

我个人想出来一个办法,通过看PullToRefreshBase的onTouchEvent()方法中的代码,我们可以用一个线程来模拟手指向下拉的动作,通过handler来刷新高度。
PullToRefreshBase.java中添加以下代码:
public final void autoRefreshing(){
		mCurrentMode = Mode.PULL_FROM_START;
		
		mInitialMotionY = 0;
		mLastMotionY = 0;
		new Thread(){
			public void run() {
				while(true){
					handler.sendEmptyMessage(100);
					if(mLastMotionY > 300){
						break;
					}
					try {
						sleep(10);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
				
				handler.sendEmptyMessage(101);
								
			}
		}.start();

}

Handler handler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			if(msg.what == 100){
				mLastMotionY += 10;
				pullEvent();
			}else if (msg.what == 101){
				if(!isRefreshing()){
				<span style="white-space:pre">	</span>setState(State.REFRESHING, true);
				}
			}else{
				setState(State.RESET);
			}
		}
	};

以上代码高度 300,10是随便写的高度,我们可以根据手机的像素来计算,sleep的时间也可以根据你自己的需要更改。
调用的时候直接使用 .autoRefreshing()就可以了。

第一次写博客,写得不好,请见谅!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值