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