在recyclelerview中得到错误的位置,与viewpager一起分段

时间:2016-08-22 15:59:56

标签: android-fragments caching android-viewpager android-recyclerview swiperefreshlayout

我有一个带有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时,我得到像Fragment中的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),但那时,我无法获得findFirstCompletelyVisibleItemPosition当切换到页面C时,swipeRefreshWidget可以刷新,但我希望它无法刷新。 像这样。 PS.页面B中的recyclerView位于顶部,但在页面A和页面C中,recyclerView位于中间。 enter image description here

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题。第一页显示第二页&#39;内容。 因为我设置: 静态串周; 和周属于班级。当我返回新的片段() 两次。第一个片段。周末发生了变化。结果是first.week == second.week。
还因为FragmentStatePagerAdapter会执行两次getitem()。所以第一个寻呼机的内容是错误的。他将在第一页显示第二段片段的内容。