swiperefreshlayout 在 onscroll 方法中保持刷新

swiperefreshlayout keep refreshing inside onscroll method

我有一个 SwipeRefreshLayout,里面有一个列表视图。 我想实现上拉刷新(因为滑动刷新只支持下拉刷新),所以对列表视图的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 方法中我这样做了:

我什至加了一个synchronized关键字来限制这个方法一次只能调用一次, 但是,在我的应用程序中,我可以看到刷新徽标不断快速显示,结果是 setRefresh 一直在调用。

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

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

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