需求:强制刷新

方法一:

PullToRefreshListView本身提供了一个setRefreshing()接口,调用该接口会自动触发下拉刷新的操作(前提是支持下拉刷新)。按照一般的操作我们直接在onCreate或者Fragment的onCreateView中直接调用ptrLv.setRefreshing();然而效果并不如所愿,下来刷新时间没有触发,下拉视图也没出现,

原因:

在调用setRefreshing()之后要显示下拉的状态栏,也就是PullToRefreshBase(PullToRefreshListView的基类)中的mHeaderLayout并未测量完成。而只有mHeaderLayout为刷新结束即手放开的时候才会调用设定的onRefreshingListener()。这里有个小知识点View的measure操作和Activity的生命周期并不是同步的

完善的处理措施:

为PullToRefreshBase(PullToRefreshListView的父类)添加一个方法,该方法的思路是开启一个线程一直去循环检测mHeaderLayout是否测量完成

//在PullToRefreshBase中添加方法,也可以在PullToRefreshListView中添加,但在PullToRefreshListView中添加需要修改PullToRefreshBase.mHeaderLayout的访问权限为protected或者public(默认是private私有的,子类不能访问)
public void firstRefreshing(){
new AsyncTask<Integer,Void,Integer>(){
@Override
protected void doInBackground(){Integer... params){
while(true){
if(mHeaderLayout.getHeight()>0) //已测量,则跳回到主线程执行postExecute()
return null;
SystemClock.sleep(200);//sleep一小段时间
}
}
@Override
protected void postExecute(Integer i){
setRefreshing(true);//刷新
}
}
}

代码中直接引用的用法:

然后在onCreate中调用ptrLv.firstRefreshing()方法即可。 
第二种方法能够保证刷新事件触发,因为刷新是在mHeaderLayout测量之后

Android——PullToRefresh自动刷新的更多相关文章

  1. 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...

  2. Android之下拉刷新,上啦加载的实现(一)

    转载地址http://blog.csdn.net/leehong2005/article/details/12567757#t5 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但 ...

  3. Android 下拉刷新框架实现

    原文地址:http://blog.csdn.net/leehong2005/article/details/12567757 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些 ...

  4. gulp下livereload和webserver实现本地服务器下文件自动刷新

    一.前言 node从v0.10.26升级(为了匹配autoprefixer)到v5.3.0后出现了gulp插件兼容问题,在nodejs下各种新的插件出现问题,需要重新配置.livereload实现ch ...

  5. 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元

    小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...

  6. gulp+browserSync自动刷新页面

    BrowserSync “Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平 ...

  7. Android ListView 自动加载更多

    Android ListView下拉刷新 ListView是我们经常用来展示数据的一个控件,但是由于我们手机的性能和流量的问题,往往我们从服务器中取数据,不能一次性将数据取出来,比如一个新闻的手机AP ...

  8. 实现SwipeRefreshLayout首次进入自动刷新

    看到了Android版知乎实现了这种效果,就自己也实现了一下. 先来一张效果图 实现方式: 方法一. ①在onWindowFocusChanged()方法中,设置为刷新状态为true @Overrid ...

  9. Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)

    转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉载入,网上的Demo太多太多了,这 ...

随机推荐

  1. 【DNN】 安装问题

    http://blog.csdn.net/hwt0101/article/details/9153083 这是IIS 注册的问题  IIS 在安装VS 之前就装上了,所以 没有注册是上 F4 从新卸载 ...

  2. (转载)Android自定义ProgressDialog进度等待框

    Android自定义ProgressDialog进度等待框 作者:无缘公子 字体:[增加 减小] 类型:转载 时间:2016-01-11我要评论 这篇文章主要介绍了Android自定义Progress ...

  3. Mysql表引擎的切换

    转换MYSQL表的引擎 1.方法一:Alter table 将1个表的引擎修改为另一个引擎最简单的方法是使用Alter table语句. 下面的语句将myTable的引擎修改为InnoDB mysql ...

  4. POJ 1990 MooFest【 树状数组 】

    题意:给出n头牛,每头牛有一个听力v,坐标x,两头牛之间的能量为max(v1,v2)*dist(v1,v2),求总的能量值 先将每头牛按照v排序,排完顺序之后,会发现有坐标比当前的x小的,会有坐标比当 ...

  5. 函数式编程-只用"表达式",不用"语句"()

    把函数当作普通的运算符使用. 2. 只用"表达式",不用"语句"() "表达式"(expression)是一个单纯的运算过程,总是有返回值: ...

  6. EFcore笔记之创建模型

    排除属性:NotMapped NotMapped:排除属性在CodeFirst的时候在数据库里不创建该属性   public class Blog { public int BlogId { get; ...

  7. 玩转图片上传————原生js XMLHttpRequest 结合FormData对象实现的图片上传

    var form=document.getElementById("formId"); var formData=new FormData(form); var oReq = ne ...

  8. WordPress开启伪静态

    一.NGINX 的话在 domain.conf 的 server 增加代码: location / { try_files $uri $uri/ /index.php?$args; } 如果使用的是 ...

  9. Webpack的作用(一个基础的打包编译工具在做什么?)

    结论: 转换ES6语法成ES5 处理模块加载依赖 生成一个可以在浏览器加载执行的 js 文件 第一个问题,转换语法,其实我们可以通过babel来做.核心步骤也就是: 通过babylon生成AST 通过 ...

  10. virt-install 创建虚拟机

    [root@kvm-server vm]# qemu-img create -f qcow2 centos69b-disk0.qcow2 10G Formatting 'centos69b-disk0 ...