Android Sharedpreferance保存数组列表问题

Android Sharedpreferance保存数组列表问题,android,sharedpreferences,Android,Sharedpreferences,保存数据已完成,但我无法检索它显示的数据 无法将java.util.HashSet转换为java.lang.String 这是我的代码。(保存) 请帮助我解决此问题。由于您正在保存集,因此需要将集检索到字符串,然后您可以再次将其转换为列表 Set<String> set = preference.getStringSet("History", null); List<String> historyList = new ArrayList<>(); his

保存数据已完成,但我无法检索它显示的数据

无法将java.util.HashSet转换为java.lang.String

这是我的代码。(保存)


请帮助我解决此问题。

由于您正在保存
,因此需要将
检索到
字符串
,然后您可以再次将其转换为
列表

 Set<String> set = preference.getStringSet("History", null);
 List<String> historyList = new ArrayList<>();
 historyList.addAll(set);
Set Set=preference.getStringSet(“历史”,null);
List historyList=新建ArrayList();
历史列表addAll(set);

准备好所有项目的ArrayList后,将其转换为逗号分隔的字符串

String itemsString = TextUtils.join(",", historyList);
preference.save("History", itemsString);
检索时,将其转换回数组

String [] itemsArray = preference.readString("History","").split(",");
检索值

Gson gson = new Gson();
String jsonText = Prefs.getString("key", null);
String[] text = gson.fromJson(jsonText, String[].class);  //EDIT: gso to gson
Gson gson = new Gson();
List<String> historyList = new ArrayList<>();
historyList.addAll(data);
String jsonText = gson.toJson(historyList);
prefsEditor.putString("key", jsonText);
prefsEditor.commit();
设置值

Gson gson = new Gson();
String jsonText = Prefs.getString("key", null);
String[] text = gson.fromJson(jsonText, String[].class);  //EDIT: gso to gson
Gson gson = new Gson();
List<String> historyList = new ArrayList<>();
historyList.addAll(data);
String jsonText = gson.toJson(historyList);
prefsEditor.putString("key", jsonText);
prefsEditor.commit();
Gson-Gson=new-Gson();
List historyList=新建ArrayList();
historyList.addAll(数据);
字符串jsonText=gson.toJson(historyList);
putString(“key”,jsonText);
提交();

通过将数组列表转换为字符串,可以将其添加到首选项中

首先使用
Gson
将数组转换为字符串

ArrayList<CustomObject> yourlist=new ArrayList<>();
public static final String MY_PREFS_NAME = "MyPrefsFile";
然后在需要的地方读这个字符串

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE); 
String restoredText = prefs.getString("myfav", null);
现在按以下方式返回阵列列表:

Type type = new TypeToken<ArrayList<CustomObject>>() { }.getType();
       ArrayList<CustomObject> yourfinallist=new ArrayList<>();
       gson = new Gson();
       yourfinallist = gson.fromJson(myfav, type);
Type Type=new-TypeToken(){}.getType();
ArrayList yourfinallist=新建ArrayList();
gson=新的gson();
yourfinallist=gson.fromJson(myfav,type);

我可以知道这是为什么吗?只有代码答案不好。最好随信附上一个解释code@Micho编辑了答案
Type type = new TypeToken<ArrayList<CustomObject>>() { }.getType();
       ArrayList<CustomObject> yourfinallist=new ArrayList<>();
       gson = new Gson();
       yourfinallist = gson.fromJson(myfav, type);