gpt4 book ai didi

android - Recyclerview 在调用 notifydatasetchanged 后滚动到顶部

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:00 28 4
gpt4 key购买 nike

我有一个水平的回收器 View (带有一个 LinearLayoutManager),它的子项有一个包含在相对布局中的 ImageView 。 recyclerview 有三个包含子项的水平行。滚动 recyclerview 时,我将使用 http 调用的响应更新数据集,并在 http 响应回调中调用 notifydatasetChanged。如果 recyclerview 子项目的高度和宽度是固定值(例如 150dp、84dp),则 recyclerview 会按预期运行,即加载新项目并保持在相同的滚动位置,但是如果我将 recyclerview 的子项目的高度和宽度设置为 match_parent 和wrap_content,recyclerview 完全刷新并滚动到第一个位置。为什么会这样?注意:我在 SO 上检查了其他类似的问题,但没有一个提供可行的解决方案。

主要布局

<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>

最佳答案

我遇到了同样的问题,也找不到关于 SO 的解决方案。该问题是由于未为 RecyclerView 设置 LayoutManager 引起的。我知道你说你有一个 LinearLayoutManager。但请确保按照以下方式进行设置。 (在我的例子中,我使用的是 Horizo​​ntalGridView,但同样的原则也适用于 RecyclerView)。

horizontalGridView = (HorizontalGridView) findViewById(R.id.gridView);
GridElementAdapter adapter = newGridElementAdapter(VenueProfileActivity.this, mDeals);
horizontalGridView.setAdapter(adapter);

HorizontalGridView.LayoutManager layoutManager = new LinearLayoutManager(VenueProfileActivity.this, LinearLayoutManager.HORIZONTAL, false);
horizontalGridView.setLayoutManager(layoutManager);
horizontalGridView.setHasFixedSize(true);

关于android - Recyclerview 在调用 notifydatasetchanged 后滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609314/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com