SharedPreferences存取特殊数据

说到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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章