前言
Android中的SharedPreferences经常使用,这里就对着存储的数据类型进行简单的记录,方便自己回顾。
正文
进入SharedPreferences.java看一下主要的方法。
写入方法
Editor putStringSet(String key, @Nullable Set<String> values); Editor putString(String key, @Nullable String value); Editor putInt(String key, int value); Editor putLong(String key, long value); Editor putFloat(String key, float value); Editor putBoolean(String key, boolean value);
读出方法
常用的读出数据的方法有如下
String getString(String key, @Nullable String defValue); Set<String> getStringSet(String key, @Nullable Set<String> defValues); int getInt(String key, int defValue); long getLong(String key, long defValue); float getFloat(String key, float defValue); boolean getBoolean(String key, boolean defValue);
保存List数据
SharedPreferences还可以存储List数据(Collection下的ArrayList,HashSet等),不过类型限定死了,只能是String类型。
使用的方法
Editor putStringSet(String key, @Nullable Set<String> values); Set<String> getStringSet(String key, @Nullable Set<String> defValues);
存储String类型的List数据
只能是String类型的
写入
ArrayList<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); SharedPreferences sharedPreferences = getSharedPreferences("PREFS_LIST", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putStringSet("KEY_LIST", new HashSet<>(list)); editor.apply();
存储的数据
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <set name="KEY_LIST"> <string>李四</string> <string>张三</string> <string>王五</string> </set> </map>
读出
ArrayList<String> list = new ArrayList<>(); SharedPreferences sharedPreferences = getSharedPreferences("PREFS_LIST", Context.MODE_PRIVATE); Set<String> set = sharedPreferences.getStringSet("KEY_LIST", new HashSet<>()); list.addAll(set);
存储自定义的类List数据
如果是自定义类呢,比如Student类
public class Student { private final int age; private final String name; private final float score; public Student(int age, String name, float score) { this.age = age; this.name = name; this.score = score; } public String getName() { return name; } public int getAge() { return age; } public float getScore() { return score; } @NonNull @Override public String toString() { return "Student{" + "age=" + age + ", name='" + name + '\'' + ", score=" + score + '}'; } }
private ArrayList<Student> mList = new ArrayList<>(); //添加数据 mList.add(new Student(16, "张三", 500)); mList.add(new Student(17, "李四", 490)); mList.add(new Student(15, "王五", 580));
此时如果SharedPreferences要存储mList时,直接使用putStringSet()时不可的。
下面介绍使用方式,需要使用Json存储。
这里使用Gson进行对数据转换
//https://github.com/google/gson implementation 'com.google.code.gson:gson:2.11.0'
初始化Gson
mGson = new GsonBuilder().setPrettyPrinting().create();
写入
SharedPreferences sharedPref = getSharedPreferences("PREFS_LIST", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); //mGson把list进行转为String editor.putString("KEY_LIST", mGson.toJson(mList)); editor.apply();
存储的数据
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="KEY_LIST">[ { "age": 16, "name": "张三", "score": 500.0 }, { "age": 17, "name": "李四", "score": 490.0 }, { "age": 15, "name": "王五", "score": 580.0 } ]</string> </map>
读出
SharedPreferences sharedPref = getSharedPreferences("PREFS_LIST", Context.MODE_PRIVATE); String data = sharedPref.getString("KEY_LIST", null); //通过gson进行转换数据 ArrayList<Student> list = mGson.fromJson(data, new TypeToken<ArrayList<Student>>() {}.getType());
参考文章
历史上的今天
暂无评论...
随机推荐
Bootstrap4移除图标解决方法
我们知道Bootstrap3是支持的图标 ,但Bootstrap4 不支持。这是因为Bootstrap4 把图标移除了,取而代之建议使用其他的,比如 https://octicons.github.com/ 和http://fontawesome.io/如果你在升级Bootstrap4 ...
SharedPreferences最后一次写入时断电偶尔存在不保存问题
前言最近测试反馈,播放音乐的信息断电时偶尔不记忆。项目中的记忆是使用sharedpreferences的,sharedpreferences是以xml文件保存,保存的位置在:/data/data/[包名]/shared_prefs测试反馈的关键字[断电]、[偶尔]和[不记忆],也就是说这...
NDK中jni.h头文件完整内容
前言这里摘抄一下jni.h头文件中的所有内容,主要是方便自己查阅。涉及的文件android-ndk-r21d-windows-x86_64\android-ndk-r21d\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include...
ubuntu nginx简单记录
前言记录一下nginx的简单使用,stop ,start restart,记录于此是方便自己查阅。正文stopsudo service nginx stopstartsudo service nginx startrestartsudo service nginx restart...
Files中启动自己的播放器
前言记录一下点击Android Files文件管理器中多媒体文件拉起我们自己写的播放器。流水账,没啥可看的,跳过吧。正文流水账而已,记录一下,方便自己查阅。只需要在AndroidMainfest.xml中的Activity中配置如下隐藏内容!评论可看后才能查看!评论可看audio/*...
addr2line.exe的简单使用
前言不常用,偶尔需要,在学习JNI时也学习addr2line工具的使用,记录于此,方便自己查阅。正文addr2line工具在Android NDK包中,我这里以Window版的为例。我这下载的是android-ndk-r21d-windows-x86_64.zip解压和环境配置我这不解...