是否可以仅使用SharedPreferences从recyclerview存储数据?

时间:2019-03-10 14:28:47

标签: android android-recyclerview sharedpreferences

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

我已经在该学院学习了android课程。最后一个类是SharedPreferences。因此,老师给了我们一个在课程过程中使用SharedPreferences的任务。

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

因此,我认为SharedPreferences只处理String,int,boolean,并且也很像原始语言....并且recyclerview也由具有位置的项组成。

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

所以问youguys是否可以仅使用SharedPreferences从recyclerview存储数据?如果不可能的话。

如何共同存储recyclerview的数据?

1 个答案:

答案 0 :(得分:1)

  

如何共同存储recyclerview的数据?

通常使用数据库来完成。在移动设备上是SQLite。您可以在这里阅读有关内容:Save data using SQLite。现在,通过基于SQLite构建的Room Persistence Library可以更轻松地使用SQLite。相关视频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*"));