在视图旁边的回收站中看到错误的位置
问题描述:
我有一个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位于中间。
答
我遇到过类似的问题。第一页显示第二页的内容。 因为我设置了: 静态字符串周; 和星期属于一类。当我返回新的片段() 两次。第一个fragment.week已经改变了。结果是first.week == second.week。
也是因为FragmentStatePagerAdapter会执行两次getitem()。所以第一个寻呼机的内容是错误的。他会在第一页显示第二个片段的内容。