我有一个水平的RecyclerView(使用LinearLayoutManager),其子项具有包装在RelativeLayout中的ImageView。RecyclerView有三行横向排列的子项。当滚动RecyclerView时,我会更新来自HTTP请求响应的数据集,并在HTTP响应回调中调用notifyDataSetChanged。如果RecyclerView的子项高度和宽度是固定值(例如150dp,84dp),则RecyclerView的行为符合预期,即加载新项并保持相同的滚动位置;但是,如果我将RecyclerView的子项高度和宽度设置为match_parent和wrap_content,则RecyclerView会完全刷新并滚动到第一个位置。为什么会发生这种情况?
注意:我查看了stackoverflow上的其他类似问题,但没有一个提供可行的解决方案。
main_layout
注意:我查看了stackoverflow上的其他类似问题,但没有一个提供可行的解决方案。
main_layout
<android.support.v7.widget.RecyclerView
android:id="@+id/grid_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="110dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="80dp"
android:background="@color/transparent"
android:outlineProvider="bounds"
android:elevation="8dp"
android:padding="0dp"
android:scrollbars="none" />
....
recycler_view_child_item
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="0dp">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:maxWidth="126dp"
android:maxHeight="225dp"
android:padding="0dp"/>
</RelativeLayout>