我有一个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方法中我这样做了:
我甚至添加了一个同步关键字来限制此方法一次调用一次, 但是,在我的应用程序中,我可以看到刷新徽标很快就会显示出来,而且事实证明setRefresh一直在调用。
我想知道它是怎么发生的?
答案 0 :(得分:2)
由于您正在将刷新设置为false而不是在post延迟位中,因此当调用onScroll方法时,它会始终将swipeRefreshLayout.isRefreshing()视为false。因此,一遍又一遍地调用setRefresh。
将setRefreshing调用移到Runnable内部可以解决该问题。