PullToRefreshView自动向下刷新

【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()就可以了。
第一次写博客,写得不好,请见谅!



    推荐阅读