在SharedPreferences中存储列表或集合时,需要将列表或集合转换为可以存储在SharedPreferences中的数据类型。SharedPreferences主要支持以下数据类型:布尔、浮点、整数、字符串和字符串集合。
要在SharedPreferences中存储列表或集合,可以将列表或集合转换为字符串,然后将其存储在SharedPreferences中。以下是一个示例,说明如何在SharedPreferences中存储和读取一个字符串列表:
// 将列表转换为字符串
private String listToString(List<String> list) {
StringBuilder sb = new StringBuilder();
for (String s : list) {
sb.append(s).append(",");
}
return sb.toString();
}
// 将字符串转换为列表
private List<String> stringToList(String s) {
List<String> list = new ArrayList<>();
if (!TextUtils.isEmpty(s)) {
String[] arr = s.split(",");
for (String item : arr) {
if (!TextUtils.isEmpty(item)) {
list.add(item);
}
}
}
return list;
}
// 保存字符串列表
private void saveList(Context context, String key, List<String> list) {
SharedPreferences sp = context.getSharedPreferences("my_shared_preferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString(key, listToString(list));
editor.apply();
}
// 读取字符串列表
private List<String> readList(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences("my_shared_preferences", Context.MODE_PRIVATE);
String s = sp.getString(key, "");
return stringToList(s);
}
在这个示例中,我们使用逗号分隔的字符串来存储和读取字符串列表。您可以根据需要使用其他分隔符或序列化方法。
请注意,SharedPreferences并不是存储大量数据的最佳选择。对于大量数据,建议使用数据库或其他存储解决方案。
领取专属 10元无门槛券
手把手带您无忧上云