SharedPreferences工具类保存List对象,自动完成序列化和反序列化

news/2024/11/8 6:33:56/

以下是一个示例的SharedPreferences工具类,其中包含了setList()和getList()方法,用于将List序列化为JSON字符串并存储到SharedPreferences中,以及从SharedPreferences中获取JSON字符串并反序列化为List对象:

import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;public class SharedPreferencesUtils {private static final String PREFS_NAME = "MyPrefs";private static final String KEY_LIST = "dataList";public static void setList(Context context, List<String> dataList) {SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();Gson gson = new Gson();String json = gson.toJson(dataList);editor.putString(KEY_LIST, json);editor.apply();}public static List<String> getList(Context context) {SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);String json = sharedPreferences.getString(KEY_LIST, null);if (json == null) {return new ArrayList<>();}Gson gson = new Gson();Type type = new TypeToken<List<String>>() {}.getType();return gson.fromJson(json, type);}
}

在上述代码中,我们定义了一个SharedPreferencesUtils工具类,其中包含了setList()和getList()方法。

setList()方法接收一个Context对象和一个List对象作为参数,将List对象序列化为JSON字符串,并使用SharedPreferences将其存储起来。

getList()方法接收一个Context对象作为参数,从SharedPreferences中获取JSON字符串,并将其反序列化为List对象后返回。

使用这两个方法,你可以方便地将List对象序列化为JSON字符串并存储到SharedPreferences中,以及从SharedPreferences中获取JSON字符串并反序列化为List对象。

希望对你有所帮助!如果还有其他问题,请随时提问。


http://www.ppmy.cn/news/917814.html

相关文章

微信公众号登录

整个流程&#xff0c;1.前端调用授权url 接口(创建一个重定向的请求方法&#xff0c;访问自动回调方法wechat.mp.callbackUrl的地址)。2.微信自动回调方法里判断该用户是需要注册还是直接登录(如果直接登录就返回token&#xff09; 是注册还是登录返回到配置文件中的 wechat.mp…

微型计算机 bios电池,16进制BIOS超频方法

近&#xff0c;在一些AMD主板BIOS中采用了16进制计数法来表示处理器、北桥倍频、电压(将主板 BIOS中的Custom P-States设置为Enable后&#xff0c;该选项即可出现)的BIOS。那么在这类主板上进行超频时应该如何设置呢&#xff1f; 采用16进制计数的BIOS 其实并不可怕&#xff0c…

power bi PP页面(power bi Desktop)

建立模型关系 1、设置多张表之间的关联关系 关联方向&#xff1a;1&#xff1a;1 &#xff08;一对一&#xff09;主表&#xff1a;主表 两张表中每条记录一一对应 1&#xff1a;* &#xff08;一对多&#xff09;主表&#xff1a;子表 主表中每一条记录不重复&#xff0c;子表…

v-model 和 .sync 深度解读

v-model 和 .sync 都是 Vue.js 中用于实现数据双向绑定的指令和修饰符。 语法糖 vs 修饰符&#xff1a; v-model 是 Vue.js 提供的一个语法糖&#xff0c;用于简化表单元素的双向绑定&#xff0c;它在内部实际上是使用了 :value 和 input 这两个指令的结合形式。.sync 是一个…

吐血整理,接口测试到接口自动化集成总结,你不知道的都在这...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 后端接口都测试什…

React jsx 中写更优雅、直观的条件运算符

为什么80%的码农都做不了架构师&#xff1f;>>> 在这篇文字中我学到了很多知识&#xff0c;同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都会使用到的…

nodejs抓取https://themeforest.net网页

为什么80%的码农都做不了架构师&#xff1f;>>> 使用nodejs抓取 https://themeforest.net 网页模版预览放入mongoose。 以后找模版就不用那么费劲了&#xff0c;我是太懒了。。。 执行图片&#xff1a; 代码&#xff1a; var request require(request); var cheer…

js版的oschian分页类

为什么80%的码农都做不了架构师&#xff1f;>>> 代码如下&#xff1a; page.js代码如下 /** * 分页类 * pageCount // 分页总数 * currentPage // 当前页 * link // 连接地址 */ function Page(opts) {this.opts {// 基本配置pageCount: …