具体现象,1.listview向下滑动时,再向下滑动会触发SwipeRefreshLayout的下拉刷新事件
2.swiperefreshlayout刷新过程中,listview还可以继续向下滑动
解决方案:
在listview设置setOnTouchListener监听事件
private boolean isRefreshing=false;//listview是否可用
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//判断listview第一个可见的条目是否是第一个条目
if(listView.getFirstVisiblePosition()==0){
View firstVisibleItemView = listNews.getChildAt(0);
//判断第一个条目距离listview是否是0,如果是,则srLayout可用,否则不可用
if (firstVisibleItemView != null && firstVisibleItemView.getTop() == 0) {
srLayout.setEnabled(true);
}else {
srLayout.setEnabled(false);
}
}else {
srLayout.setEnabled(false);
}
//根据当前是否是在刷新数据,来决定是否拦截listview的触摸事件
return isRefreshing;
}
});
在srLayout的onRefresh方法中,将isRefreshing设置为true
在srLayout.setRefresh(false)后,及刷新完毕后,将isRefreshing设置为false