【问题标题】:Is it possible to store a data from recyclerview by using only SharedPreferences?是否可以仅使用 SharedPreferences 来存储来自 recyclerview 的数据?
【发布时间】:2019-07-31 23:45:47
【问题描述】:

我是 android 新手,英语也是新手,抱歉我的英语不好......

我在学院学习了安卓课程。最后一类是 SharedPreferences。所以老师在我们在课程中制作的应用程序中给出了一个使用 SharedPreferences 的任务。

应用程序包含一个recyclerview,它由文本、复选框和按钮组成。

所以我认为 SharedPreferences 只处理 String、int、boolean 和 long 像原始 .... 并且 recyclerview 是由位置组成的项目。

所以我找到了在上课之前使用GSON存储recyclerview文本列表的方法。但是老师说我们不用GSON...

所以问你们是否可以仅使用 SharedPreferences 来存储来自 recyclerview 的数据???如果不可能。

recyclerview的数据一般如何存储??

【问题讨论】:

  • 请添加Recycler.Adapter的数据类型
  • 分享你的代码和布局。
  • 好的!!请稍等
  • 缺少 targetInfo 类
  • 哦抱歉 T^T 我编辑 agian

标签: android android-recyclerview sharedpreferences


【解决方案1】:

recyclerview的数据一般如何存储??

这通常通过使用数据库来完成。在移动设备上是 SQLite。你可以在这里阅读:Save data using SQLite。 SQLite 现在更易于与基于 SQLite 构建的 Room Persistence Library 一起使用。相关视频here.

使用 GSON 的 recyclerview 文本列表。但是老师说我们没有 使用 GSON... 是否可以仅使用来存储来自 recyclerview 的数据 共享首选项?

是的,可以存储来自 recyclerview 的数据。您不需要 GSON。

您已使用 targetlist ArrayList 来存储来自 RecyclerView 的数据。只需添加一个方法 toString 将其转换为字符串。在此方法中,遍历您的列表并将它们连接到一个字符串,您可以将其作为字符串写入 SharedPreferences。要取回项目,只需取回字符串(也称为CSV or Comma Separated Value)并对其执行.split()

示例列表数据:

  1. 蝙蝠
  2. 大鼠

串联字符串:Cat,Bat,Rat(用逗号将此串联字符串保存到共享首选项)。

一些示例代码:

//Concatenating List Data and position   
String string_item_name_to_save = targetlist.get(0);
String string_item_position_to_save = "0";    
for(int i = 1; i<targetlist.size(); i++){
    string_item_name_to_save = string_item_name_to_save +","+ targetlist.get(i);
    string_item_position_to_save = string_item_position_to_save +","+ Integer.toString(i)
}

//Convert comma separated String back to List
List<String> items = Arrays.asList(concatenated_string.split("\\s*,\\s*"));

【讨论】:

  • 嗯......很难理解......如果不是你的负担。你能给我更多关于示例的信息吗???我不明白,如果我做了很多目标列表,数据如何将目标列表与项目列表连接起来......
  • 啊抱歉我的错...我没有正确重命名变量,我会编辑它。
  • T^T 我很困惑。字符串类型只有一种信息。即使我使用您告知的“for”方法,最终“string_to save”也会保存 targetlist.get(last number) 的最后一个数字 例如 targetlist 包含 2 个单词,如 targetlist.add(0,"a") , targetlist .add(2,"b")。 'string_to_save' 保存“a,b”。但是当我检索时,我还需要目标列表的“0”位置..
  • 你想保存数组中项目的位置吗?您也可以通过将其添加到另一个称为位置的字符串或相同的字符串来执行这些操作。我会更新答案。
  • 您不需要将位置保留在任何单独的字符串中。从您的 concatenated_string 取回数据后,您的项目列表的索引将是您的数据在回收站中的位置。但是,如果需要,您可以保留一个带有位置的附加字符串。
猜你喜欢
  • 2012-08-16
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2012-06-01
相关资源
最近更新 更多