| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

SwipeRefreshLayout下拉刷新冲突解决

使用SwipeRefreshLayout,网上资料copy了一个OnScrollListener给ListView,

结果当第一个item长度超过一屏,明明还没有到达列表顶部,Scroll事件就被拦截,列表无法滚动,同时启动了刷新。

修正代码后,自定义的OnScrollListener如下:

/** 由于Listview与下拉刷新的Scroll事件冲突, 使用这个ScrollListener可以避免Listview滑动异常 */  public static class SwpipeListViewOnScrollListener implements AbsListView.OnScrollListener {         private SwipeRefreshLayout mSwipeView;      private AbsListView.OnScrollListener mOnScrollListener;         public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView) {          mSwipeView = swipeView;      }         public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView,              OnScrollListener onScrollListener) {          mSwipeView = swipeView;          mOnScrollListener = onScrollListener;      }         @Override      public void onScrollStateChanged(AbsListView absListView, int i) {      }         @Override      public void onScroll(AbsListView absListView, int firstVisibleItem,                           int visibleItemCount, int totalItemCount) {          View firstView = absListView.getChildAt(firstVisibleItem);             // 当firstVisibleItem是第0位。如果firstView==null说明列表为空,需要刷新;或者top==0说明已经到达列表顶部, 也需要刷新          if (firstVisibleItem == 0 && (firstView == null || firstView.getTop() == 0)) {              mSwipeView.setEnabled(true);          } else {              mSwipeView.setEnabled(false);          }          if (null != mOnScrollListener) {              mOnScrollListener.onScroll(absListView, firstVisibleItem,                      visibleItemCount, totalItemCount);          }      }  }

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1430903367476.html
Android开发 移动开发 SwipeRefreshLayout