0

У меня есть viewpager с 4 фрагментами, есть RecyclerView и SwipeRefreshLayout в каждом фрагменте. XML-код, как это:получить неправильное положение в recyclerview, которое в фрагменте с viewpager

<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 в Fragment как

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 со страницы А на страницу Б и на страницу C , когда на странице C recyclerView не находится в верхней части (findFirstCompletelyVisibleItemPosition не равно 0), но в то время я не могу получить findFirstCompletelyVisibleItemPosition при переключении на страницу C, поэтому swipeRefreshWidget может обновляться, но я хочу, чтобы он не мог обновить. вот так. PS.the recyclerView на странице B находится вверху, но на страницах A и стр. C recyclerView находится посередине. enter image description here

ответ

0

У меня возникли аналогичные проблемы. первая страница отображает содержимое второй страницы. Потому что я установил: статическая строка неделя; и неделя относится к классу. когда я возвращаю новый фрагмент() дважды. первый фрагмент.week изменился. результат первый.week == второй .недельный.
также потому, что FragmentStatePagerAdapter выполнит getitem() дважды. поэтому содержимое первого пейджера неверно. он отобразит содержимое второго фрагмента на первой странице.