说到SharePrefrence,简称sp,大家一点不陌生,经常会用它存储一些简单数据,那么简单数据是什么?这里总结下
SharePrefrence中有个抽象类叫Editor,包含以下方法:
存储普通数据:
putBoolean(String key,boolean value),保存整型
putInt(String key,int value),保存int类型
putFloat(String key,float value),保存float类型
putLong(String key,long value),保存long类型
putString(String key,String value),保存字符串
存储set集合
putStringSet(String key,Set<String> values),保存set集合
以上是Editor中存储数据的方法
那么,实际开发中经常会遇到存储某个对象,某个list,怎么办呢?
利用Gson、FastJson等把某个Objectt或者某个ListObject转成普通String,用putString()保存,需要展示缓存内容时,get到String,利用Gson转成Object或者ListObject
存储Object对象
<code class="language-java hljs has-numbering"><span class="hljs-keyword"> public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">saveObject</span>(String key, Object obj) {
SharedPreferences.Editor edit = settings.edit();
String str = gson.toJson(obj, obj.getClass());
edit.putString(key, str);
edit.commit();
}</code> 获取Object对象
public <T> T getObject(String key, Class<?> classItem) {
try {
String str = settings.getString(key, null);
if (str != null) {
return (T) gson.fromJson(str, classItem);
}
} catch (Exception e) {
<pre name="code" class="java"> }
}
存储ListObeject对象<code class="language-java hljs has-numbering"> <span class="hljs-keyword">public</span> <T> <span class="hljs-keyword">void</span> <span class="hljs-title">saveListObject</span>(String key, List<T> list) {
SharedPreferences.Editor edit = settings.edit();
String str = gson.toJson(list);
edit.putString(key, str);
edit.commit();
}</code>获取ListObeject对象
<code class="language-java hljs has-numbering"></code><pre class="prettyprint" name="code"><code class="language-java hljs has-numbering"><span class="hljs-keyword"> public</span> List <span class="hljs-title">getListObject</span>(String key,Class<?> classItem) {
JavaType javaType = mapper.getTypeFactory().constructCollectionType(ArrayList.class, classItem);
<span class="hljs-keyword">try</span> {
String str = settings.getString(key, <span class="hljs-keyword">null</span>);
<span class="hljs-keyword">if</span> (str != <span class="hljs-keyword">null</span>) {
<span class="hljs-keyword">return</span> mapper.readValue(str,javaType);
}
} <span class="hljs-keyword">catch</span> (Exception e) {
}
<span class="hljs-keyword"> return</span> <span class="hljs-keyword">null</span>;
} </code>
本文详细介绍如何使用SharePrefrence存储复杂数据类型如Object和List,通过Gson将对象转换为字符串并保存,同时提供了存储和获取数据的具体实现。

7044

被折叠的 条评论
为什么被折叠?



