SharedPreferencesUtil.java 4.52 KB
package com.sunvote.xpadapp.utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import java.util.List;

public class SharedPreferencesUtil {
	//存储的sharedpreferences文件名
    private static final String FILE_NAME = "save_file_name";  
      
    /**
     * 保存数据到文件
     * @param context
     * @param key
     * @param data
     */
    public static void saveData(Context context, String key,Object data){  
  
        String type = data.getClass().getSimpleName();  
        SharedPreferences sharedPreferences = context  
                .getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);  
        Editor editor = sharedPreferences.edit();  
          
        if ("Integer".equals(type)){  
            editor.putInt(key, (Integer)data);  
        }else if ("Boolean".equals(type)){  
            editor.putBoolean(key, (Boolean)data);  
        }else if ("String".equals(type)){  
            editor.putString(key, (String)data);  
        }else if ("Float".equals(type)){  
            editor.putFloat(key, (Float)data);  
        }else if ("Long".equals(type)){  
            editor.putLong(key, (Long)data);  
        }  
          
        editor.commit();  
    }  

    /**
     * 从文件中读取数据
     * @param context
     * @param key
     * @param defValue
     * @return
     */
    public static Object getData(Context context, String key, Object defValue){

        String type = defValue.getClass().getSimpleName();
        SharedPreferences sharedPreferences = context.getSharedPreferences
                (FILE_NAME, Context.MODE_PRIVATE);

        //defValue为为默认值,如果当前获取不到数据就返回它
        if ("Integer".equals(type)){
            return sharedPreferences.getInt(key, (Integer)defValue);
        }else if ("Boolean".equals(type)){
            return sharedPreferences.getBoolean(key, (Boolean)defValue);
        }else if ("String".equals(type)){
            return sharedPreferences.getString(key, (String)defValue);
        }else if ("Float".equals(type)){
            return sharedPreferences.getFloat(key, (Float)defValue);
        }else if ("Long".equals(type)){
            return sharedPreferences.getLong(key, (Long)defValue);
        }

        return null;
    }

    /**
     * 保存List
     * @param tag
     * @param datalist
     */
    public static <T> void setDataList(Context context, String tag, List<T> datalist) {
        if (null == datalist || datalist.size() <= 0)
            return;
        SharedPreferences sharedPreferences = context
                .getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
        Editor editor = sharedPreferences.edit();

        Gson gson = new Gson();
        //转换成json数据,再保存
        String strJson = gson.toJson(datalist);
        editor.putString(tag, strJson);
        editor.commit();
    }

    public static void setArrayString(Context context,String tag, String[] values) {
        String regularEx = "~";
        String str = "";
        SharedPreferences preferences = context.getSharedPreferences
                (FILE_NAME, Context.MODE_PRIVATE);
        if (values != null && values.length > 0) {
            for (String value : values) {
                str += value;
                str += regularEx;
            }
            Editor et = preferences.edit();
            et.putString(tag, str);
            et.commit();
        }
    }

    /**
     * 获取List
     * @param tag
     * @return
     */
    public static <T> List<T> getDataList(Context context,String tag) {
        List<T> datalist=new ArrayList<T>();
        SharedPreferences preferences = context.getSharedPreferences
                (FILE_NAME, Context.MODE_PRIVATE);
        String strJson = preferences.getString(tag, null);
        if (null == strJson) {
            return datalist;
        }
        Gson gson = new Gson();
        datalist = gson.fromJson(strJson, new TypeToken<List<T>>() {
        }.getType());
        return datalist;

    }

    public static String[] getArrayString(Context context,String tag) {
        String regularEx = "~";
        String[] str = null;
        SharedPreferences preferences = context.getSharedPreferences
                (FILE_NAME, Context.MODE_PRIVATE);
        String values;
        values = preferences.getString(tag, null);
        if(values!=null){
            str = values.split(regularEx);
        }
        return str;
    }
}