PullToRefreshView自动向下刷新

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

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

第二种是网上说的

new Handler().postDelayed(new Runnable() {
 
        @Override
        public void run() {
        	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()){
					setState(State.REFRESHING, true);
				}
			}else{
				setState(State.RESET);
			}
		}
	};

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

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


你可能感兴趣的:(PullToRefreshView自动向下刷新)