SharedPreferences保存List<T>数据

本文介绍如何使用Gson将List<Integer>转换为JSON字符串,并通过SharedPreferences存储及读取。这是一种解决SharedPreferences不直接支持List<T>类型的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sharepreferences是使用键值对的方式来存储数据的,但是Sharepreferences并不支持支持存储List<T>数据。

我们可以使用Gson将List数据转成Json类型再进行存储读取,以List< Integer >为例:

存储:

//SharedPreferences存储list数据
SharedPreferences.Editor editor = getSharedPreferences("key",MODE_PRIVATE).edit();
Gson gson = new Gson();
//将list转成Json
String jsonStr = gson.toJson(list);
editor.putString("name",jsonStr);
//提交
editor.commit();

读取:

//声明
List<Integer> listArr = new ArrayList();
//创建sp对象,取出关键字为key的sp
SharedPreferences sp = getActivity().getSharedPreferences("serialModel",Context.MODE_PRIVATE);
String str = sp.getString("name","");
if (str != ""){
    Gson gson = new Gson();
   //TypeToken<List<Integer>>()将json数据转成List集合
    listArr = gson.fromJson(str,new TypeToken<List<Integer>>(){}.getType());
}


原文地址

SharedPreferencesAndroid中用于存储和检索键值对的类。它提供了一种通用的框架,可以保存和检索原始数据类型的永久性键值对。您可以使用SharedPreferences保存布尔值、浮点值、整型值、长整型和字符串等各种原始数据类型。这些数据将在多个用户会话中永久保存,即使应用程序已经终止也不会丢失。\[3\] 要使用SharedPreferences,您需要通过Context提供的getSharedPreferences(String name, int mode)方法获取SharedPreferences的实例。其中,第一个参数指定了SharedPreferences文件的名称(格式为xml文件),如果该文件不存在,则会创建一个新的文件。第二个参数指定了操作模式,例如MODE_PRIVATE表示只有本应用程序可以对该SharedPreferences文件进行读写,而MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE表示其他应用程序也可以读取或写入该文件。MODE_MULTI_PROCESS在Android 2.3之后已经弃用,可以省略。\[2\] SharedPreferences.Editor是用于编辑SharedPreferences的对象。它提供了一些主要的方法,例如clear()用于删除SharedPreferences中的所有数据,putXxx(String key, xxx value)用于向SharedPreferences存入指定key对应的数据,remove()用于删除SharedPreferences中指定key对应的数据项,commit()用于同步提交修改,apply()用于异步提交修改。\[1\] #### 引用[.reference_title] - *1* *2* *3* [SharedPreferences使用及原理](https://blog.youkuaiyun.com/qq_40959750/article/details/123337564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值