I use findLastCompletelyVisibleItemPosition() to determine the last visible item in my RecyclerView.
Here is a code snippet of how I customize my layout:
mRecyclerView.setHasFixedSize(true); LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext()); mRecyclerView.setLayoutManager(mLayoutManager);
XML format:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipe_container" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/message_list" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:paddingBottom="@dimen/footer_progress_bar" android:paddingTop="16dp" android:scrollbars="vertical" /> <ProgressBar android:id="@+id/progress_bar" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center" android:visibility="gone" /> <ProgressBar android:id="@+id/footer_progress_bar" android:layout_width="@dimen/footer_progress_bar" android:layout_height="@dimen/footer_progress_bar" android:layout_gravity="center|bottom" android:visibility="gone" /> </FrameLayout> </android.support.v4.widget.SwipeRefreshLayout>
In portrait mode, this works great and always returns to the correct position.
However, in landscape mode, the returned position is always -1.
My question is:
Does anyone know why this is happening?
How can I override this to get the right position back?
Or can someone recommend another solution to get the last position in the landscape right?
source share