package com.ladjzero.uzlee; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.List; /** * Created by chenzhuo on 16-2-11. */ public class AndroidAdapter implements PersistenceAdapter { private SharedPreferences mPref; public AndroidAdapter(Context context) { mPref = PreferenceManager.getDefaultSharedPreferences(context); } @Override public <T> T getValue(String key, Class<T> t, T defaultValue) { Object ret; if (t.equals(Integer.class)) { ret = mPref.getInt(key, (Integer) defaultValue); } else if (t.equals(Long.class)) { ret = mPref.getLong(key, (Long) defaultValue); } else if (t.equals(Float.class)) { ret = mPref.getFloat(key, (Float) defaultValue); } else if (t.equals(Boolean.class)) { ret = mPref.getBoolean(key, (Boolean) defaultValue); } else if (t.equals(String.class)) { ret = mPref.getString(key, (String) defaultValue); } else { String value = mPref.getString(key, null); if (value == null) { return defaultValue; } else { if (List.class.isAssignableFrom(t)) { ret = JSON.parseArray(value); } else { ret = JSON.parse(value); } } } return (T) ret; } @Override public void putValue(String key, Object value) { SharedPreferences.Editor editor = mPref.edit(); if (value instanceof Integer) { editor.putInt(key, (Integer) value); } else if (value instanceof Long) { editor.putLong(key, (Long) value); } else if (value instanceof Float) { editor.putFloat(key, (Float) value); } else if (value instanceof Boolean) { editor.putBoolean(key, (Boolean) value); } else if (value instanceof String) { editor.putString(key, (String) value); } else { editor.putString(key, JSON.toJSONString(value, SerializerFeature.WriteClassName)); } editor.commit(); } }