Android SwipeRefreshLayout的 swipe.setRefreshing(true)无法自动刷新问题

在项目中要求进入Activity时,即出现下拉刷新样式,以提醒用户正在数据正在刷新,但是用swipe.setRefreshing(true)方法却达不到效果,没有作用,经查找需要 
swipe.post(new Runnable() {
            @Override
            public void run() {
                if (swipe.isRefreshing()){
                    swipe.setRefreshing(false);
                }
            }
        });

这样做才会有下拉刷新出现,而无须用户手动下拉操作,然而这样做并没有进入SwipeRefreshLayout的onRefresh()方法,仍需主动调用onRefresh(),方可执行该方法,并且
想要在数据请求完成后,停止刷新样式,调用swipe.setRefreshing(false)是没有作用的,(在由用户操作引发的下拉刷新时起作用),这时候需要
 swipe.post(new Runnable() {
            @Override
            public void run() {
                if (swipe.isRefreshing()){
                    swipe.setRefreshing(false);
                }
            }
        });
这样,才能停止刷新。具体原因有网友分析出是SwipeRefreshLayout在onCreate()中onMeasure()方法,仍未发生作用,所以设置下拉刷新无效。
具体可见:https://www.zhihu.com/question/35422150

 
 

猜你喜欢

转载自blog.csdn.net/androidforwell/article/details/53522834