如何保存recycleview中每个项目的状态?

发布于 2025-01-12 20:47:53 字数 465 浏览 0 评论 0原文

这是应用程序主活动的结构

-->电影片段/系列片段 -->通过自定义适配器回收视图 -->卡片视图 XML 布局

主要活动根据按钮选择动态选择片段。 电影/系列片段使用适配器来初始化回收器视图。 该适配器对每个项目使用 XML 卡片视图布局,其中还包含喜欢和不喜欢的单选按钮。

所以这是我的问题,如何保存喜欢和不喜欢单选按钮的状态?在页面(片段)之间切换时?

我已附上应用程序的图像以获取更多上下文

在此处输入图像描述

每次我单击电影或系列按钮时,片段都会重新渲染并丢失所有信息。

我要在主要活动中保存状态吗?电影片段?或者在适配器中?正确的做法是什么?

Here is the structure of the application

Main Activity --> movies fragment/series fragment --> recycle view via custom adapter --> card view XML layout

the main activity dynamically selects the fragments based on the button selection.
the movies/series fragments use the adapter to initialize the recycler view.
the adapter uses an XML card view layout for each item which also contains the like and dislike radio buttons.

so here is my question, how do I save the state of the like and dislike radio buttons? when switching between pages(fragments)?

I've attached an image of the application for more context

enter image description here

every time I click movies or series button the fragments rerenders and loses all information.

do I save the state in the main activity? the movies fragment? or in the adapter? whats the correct approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不回头走下去 2025-01-19 20:47:53

一个简单且快速的解决方案是共享每个项目 ID 的首选项。
但不建议在实际项目中这样做
您可以使用 Room 作为本地数据库,也可以更新服务器上的每个相似或不同的内容,然后在片段重新创建时从服务器获取数据。所有解决方案都取决于您的用例。要记住的因素是数据列表的大小和数据的更新频率。

A simple and faster solution is shareprefs for each item ID.
But this is not recommended for real-world projects
Either you can use Room for the local database or you can update every like or unlike on the server and then fetch your data from the server when fragment recreates. all solution depends on your use case. factors to keep in mind is size of data-list and update frequency of your data.

最偏执的依靠 2025-01-19 20:47:53
  1. 您无法像这样保存状态,因为硬编码对象将在应用程序退出和启动时被销毁和创建。我认为最好的方法是使用 room 数据库
  2. 添加一个布尔值(如 /不喜欢您的数据类。
  3. 使用 room 数据库将数据保存在存储中。
  1. You can't save state like this because hard coded object will be destroyed and created on app exit and start. I think best approach will be to use room database
  2. Add a boolean(Like /disliked to your data class.
  3. Use room database to save your data in storage.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文