swiperefreshlayout在onscroll方法中保持刷新

时间:2015-05-07 17:05:19

标签: android android-layout listview synchronized swiperefreshlayout

我有一个SwipeRefreshLayout,里面有一个listview。 我想实现pull up to refresh(因为刷卡刷新只支持pull down刷新),因此对列表视图的onscroll方法做了一点修改

@Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, final int totalItemCount) {

                  if(firstVisibleItem + visibleItemCount >= totalItemCount && totalItemCount != 0 && !swipeRefreshLayout.isRefreshing() && pagecount > 0){
                      setRefresh();
                  }

//
            }

并且在setRefresh方法中我这样做了:

enter image description here

我甚至添加了一个同步关键字来限制此方法一次调用一次, 但是,在我的应用程序中,我可以看到刷新徽标很快就会显示出来,而且事实证明setRefresh一直在调用。

我想知道它是怎么发生的?

1 个答案:

答案 0 :(得分:2)

由于您正在将刷新设置为false而不是在post延迟位中,因此当调用onScroll方法时,它会始终将swipeRefreshLayout.isRefreshing()视为false。因此,一遍又一遍地调用setRefresh。

将setRefreshing调用移到Runnable内部可以解决该问题。