gpt4 book ai didi

android - Recyclerview 中的 Diffutil,如果添加新项目则自动滚动

转载 作者:可可西里 更新时间:2023-11-01 19:08:42 28 4
gpt4 key购买 nike

如果我们使用 DiffUtil.Callback,并执行

adapter.setItems(itemList);
diff.dispatchUpdatesTo(adapter);

我们如何确保添加新元素时会滚动到新位置。

我有一个案例,我看到项目消失了,一个新的项目被创建为顶部的第一个元素,但不可见。它隐藏在顶部,直到您向下滚动以使其可见。在使用 DiffUtil 之前,我是手动实现的,在我知道我在某个位置(顶部)插入后,我可以滚动到。

最佳答案

有一种简单的方法可以做到这一点,如果项目被插入到可视区域之外,也可以保留用户的滚动位置:

import android.os.Parcelable;

Parcelable recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();
// apply diff result here (dispatch updates to the adapter)
recyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);

使用这种方法,如果将新项目插入到用户可以看到它们的位置,则新项目将变得可见 - 但如果将项目插入到 View 之外,则用户的视点将被保留。

关于android - Recyclerview 中的 Diffutil,如果添加新项目则自动滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458146/

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