在视图旁边的回收站中看到错误的位置

问题描述:

我有一个4片段的viewpager,每个片段都有一个RecyclerView和SwipeRefreshLayout。 XML代码:在视图旁边的回收站中看到错误的位置

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/swipe_refresh_widget" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <android.support.v7.widget.RecyclerView 
      android:id="@+id/orderList" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/background"/> 
</android.support.v4.widget.SwipeRefreshLayout> 

当我从左至右切换ViewPager,我得到的RecyclerView的片段像

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 

      //set swipeRefreshWidget can not refresh when recyclerView is not in the top 
      mSwipeRefreshWidget.setEnabled(orderLayoutManager.findFirstCompletelyVisibleItemPosition() == 0); 
      } 
     } 
    }); 

但是当我切换viewpager从网页A指向网页B和网页C ,在页面C中,recyclerView不在顶端(findFirstCompletelyVisibleItemPosition不为0),但是当时我切换到C页面时无法获得findFirstCompletelyVisibleItemPosition,所以swipeRefreshWidget可以刷新,但我希望它不能刷新。 是这样的。 PS.the B的recyclerView在顶部,但在页面A和页面C中,recyclerView位于中间。 enter image description here

我遇到过类似的问题。第一页显示第二页的内容。 因为我设置了: 静态字符串周; 和星期属于一类。当我返回新的片段() 两次。第一个fragment.week已经改变了。结果是first.week == second.week。
也是因为FragmentStatePagerAdapter会执行两次getitem()。所以第一个寻呼机的内容是错误的。他会在第一页显示第二个片段的内容。