如何在从另一个活动返回时保留 Recyclerview 的滚动位置?

2024-01-05

我看到了很多关于这个主题的相关问题,但没有一个对我有帮助。我正在使用一个交错网格布局对于我的 RecyclerView (显示cards)。 每个 CardView 都会打开一个新活动,我面临的问题是,在从该新活动返回时,RecyclerView 会滚动回顶部。我希望它保留之前滚动的位置。

这是我现在用来设置布局的:

rv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
rv.setHasFixedSize(true);

对于新手来说有什么合适的工作解决方案吗?

EDIT :

   @Override
 protected void onResume() {
     super.onResume();
    if (listState != null) {
        rvlayout.onRestoreInstanceState(listState);
    }
      initializeData();

 }

Layout :

RecyclerView.LayoutManager rvlayout = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);

并初始化数据:

 public void initializeData() {

    rv.setLayoutManager(rvlayout);
    rv.setHasFixedSize(true);
    persons.clear();

    c = db.rawQuery(SELECT_SQL, null);
    c.moveToFirst();

    if (!c.moveToFirst())
    return;


    while (!c.isLast()) {
        id = c.getString(0);
        names = c.getString(1);
        age = c.getString(2);
        persons.add(new Person(id,names,age));
        c.moveToNext();
    }

    adapter = new RVAdapter(persons);
    rv.setAdapter(adapter);

}

正确的方法是保存 RecyclerView 滚动位置的状态,并在 Activity 之间切换时恢复它。

1. 要保存它,请重写 onSaveInstanceState()

protected void onSaveInstanceState(Bundle state) {
    super.onSaveInstanceState(state);

    state.putParcelable(LIST_STATE_KEY, layoutManager.onSaveInstanceState());
}

2. 检索数据覆盖 onRestoreInstanceState()

protected void onRestoreInstanceState(Bundle state) {
    super.onRestoreInstanceState(state);

    Parcelable listState = state.getParcelable(LIST_STATE_KEY);
}

3.最后在onResume()方法中更新LayoutManager

@Override
protected void onResume() {
    super.onResume();

    if (listState != null) {
        layoutManager.onRestoreInstanceState(listState);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在从另一个活动返回时保留 Recyclerview 的滚动位置? 的相关文章

随机推荐

  • scapy 十六进制转储()

    我想知道哪个hexdump scapy 使用 因为我想修改它 但我根本找不到任何东西 我发现的是 def hexdump self lfilter None for i in range len self res p self elt2pk
  • Linux 上的 Java BlockingQueue 延迟较高

    我正在使用 BlockingQueue s 尝试 ArrayBlockingQueue 和 LinkedBlockingQueue 在我当前正在处理的应用程序中的不同线程之间传递对象 在此应用程序中 性能和延迟相对重要 因此我很好奇使用 B
  • 检查 JSON 和 XML 是否有效? C#

    我使用 newtonsoft json nethttp json codeplex com http json codeplex com 我想知道 如何验证 json 和 xml 是否有效 json xml 我如何验证这一点 您想要在服务器
  • 如何在双引号字符串中使用对象的属性?

    我有以下代码 DatabaseSettings NewDatabaseSetting select DatabaseName DataFile LogFile LiveBackupPath NewDatabaseSetting Databa
  • Qt中有进程内本地管道吗?

    Qt 有没有QIODevice适合的一对intra 处理点对点通信 人们可以使用混凝土QTCPSocket or QLocalSocket 但是服务器端连接API有点麻烦 而且强制数据通过OS似乎很浪费 以下是一个可用的基本实现 它使用内部
  • 将 UILabel 高度设置为 0

    是否可以通过编程方式设置 UILabel 的高度 我在 Xib 文件中添加了一系列约束 因此每个其他标签都依赖于其上方或下方的标签来定位 如果我可以使用 它会让我的生活变得更轻松 nameLabel height 0 我的 Xib 看起来像
  • 设置HttpClient的授权头

    我有一个用于 REST API 的 HttpClient 但是我在设置授权标头时遇到问题 我需要将标头设置为执行 OAuth 请求时收到的令牌 我看到一些 NET 代码表明以下内容 httpClient DefaultRequestHead
  • 如何使 COMReference 在 Azure CI/CD 管道中工作

    我在我的项目中使用了一个 dll 它被添加到我的项目文件中作为COMReference喜欢关注
  • 使用带有 $ 的逻辑向量对数据帧进行子集化

    我无法理解使用原因 and behavior of the 子集 a 中的符号data frame下面的例子是在我正在参加的初学者课程中提出的 不是现场教授 所以不能在那里询问 temp mat lt matrix 1 9 nrow 3 c
  • 如何使用嵌套的 NSDate 属性将 Realm 对象转换为 JSON?

    我有一个带有多个嵌套的嵌套 Realm 对象NSDate嵌套对象中的属性 我在用这个答案 https stackoverflow com questions 32023249 how can i convert a realm object
  • 归一化编辑距离公式解释

    基于本文 IEEE PAITERN 分析交易 归一化编辑距离的计算及应用本文归一化编辑距离 http www csie ntu edu tw b93076 Computation 20of 20Normalized 20Edit 20Dis
  • 超级模糊纹理 - XNA

    当我近距离观察纹理时 我的纹理似乎变得非常模糊 我正在创建一个类似 Minecraft 的地形 我希望纹理能够像素化 就像它是制作出来的一样 而不是 XNA 尝试为我平滑它 它的显示方式如下 任何建议将不胜感激 它与抗锯齿无关 它与硬件如何
  • JS 对象按键顺序

    即使将新值分配给某个键 javascript 是否也能保证保留对象的键序列 例如 如果我有以下对象 var Object keyX value1 keyB value2 keyZ value3 如果我使用迭代键for in 我得到正确的顺序
  • 向 Magento 中的属性选项添加新值

    我正在尝试使用脚本向 Magento 中的属性选项添加新值以加快该过程 因为我有 2 000 多个制造商 这是我用来执行此任务的一段代码 创建自定义模块 使用模块创建器 http www magentocommerce com extens
  • JAXBContextFactory 地狱 - java.lang.ClassNotFoundException:com.ibm.xml.xlxp2.jaxb.JAXBContextFactory

    我在我的开发环境中不断收到以下错误 我用 火星日食 4 5 1 Oracle JDK 1 7 内部版本 1 7 0 79 b15 或 1 8 内部版本 1 8 0 65 b17 Apache Ant 运行代码以及 Eclipse 运行代码
  • ELF 格式操作

    我有一个要求 我想关联一个index与一个文件 以某种格式 我想知道我是否可以进行任何 ELF 操作 并且仍然确保保持一致性 以便该文件在 Linux 上正常工作 这里的想法是创建一种文件格式 可以通过某个 API 自定义 查询该文件格式以
  • GWT - 如何在超级开发中查看java异常堆栈跟踪?

    我正在使用 GWT Super Dev 并在 Chrome 中激活了源映射 尽管我可以在 源 选项卡中看到 Java 类 但我不知道如何查看未处理异常的完整堆栈跟踪 那么我该怎么做呢 有一个悬而未决的问题 http code google
  • 给定一个数组 [a1b2c3d4] 转换为 [abcd1234]

    限制条件 O 1 空间 准时 这不是一个家庭作业问题 只是我遇到的一个有趣的问题 以下是我能想到的一些解决方案 但在给定的限制下没有任何解决方案 Method 1 具有 O n 内存 递归地将数组分为两部分 继续划分直到每个子问题的大小 对
  • 是否可以构建一个交互式 C shell?

    我只是想知道这是否可以使用 Python Java 或 C 我正在寻找类似 IPython for Python 的东西 是的 这样的东西已经存在 你只需要用谷歌搜索即可 Ch http en wikipedia org wiki Ch i
  • 如何在从另一个活动返回时保留 Recyclerview 的滚动位置?

    我看到了很多关于这个主题的相关问题 但没有一个对我有帮助 我正在使用一个交错网格布局对于我的 RecyclerView 显示cards 每个 CardView 都会打开一个新活动 我面临的问题是 在从该新活动返回时 RecyclerView