Android:SwipeRefreshLayout+RecyclerView冲突解决

Android:SwipeRefreshLayout+RecyclerView.onScrollListener冲突解决

提供一个简单的解决方式,首先重写onScrollListener内部的onScrolled方法,即滚动完成后,我们进行判断。
判断RecyclerView可见的item位于第一个的时候,使swipeRefresh获取焦点,不走ScrollListener,当不在第一个不在屏幕内显示的时候,走ScrollListener。
下面放代码

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
	public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
	                //判断RecyclerView可见的item位于第一个的时候,使swipeRefresh获取焦点,不走ScrollListener,当不在第一个不在屏幕内显示的时候,走ScrollListener
	                int topRowVerticalPosition =
	                        (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
	                  //走swipeRefresh
	                swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0);
	                
	                if (topRowVerticalPosition < 0)
	                {
	                	//走ScrollListener 写具体内容
					}
	    }
	      @Override
	      public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
	          super.onScrollStateChanged(recyclerView, newState);
	      }
    }

你可能感兴趣的:(my,android,java,移动开发)