import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Build;
import android.text.TextUtils;

/**
* @ClassName: SharePreferenceUtils
* @Description: SharePreference工具类
* @Author:lxs
*
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressWarnings("unchecked")
public class SharePreferenceTools {

private SharedPreferences sharedPreferences;
private Editor editor;
private final int ZERO = 0;

public SharePreferenceTools(Context context) {
this(context, ConfigUtils.PREFERENCE_DEFAULT_NAME, Context.MODE_PRIVATE);
}

public SharePreferenceTools(Context context, String preferenceName) {
this(context, preferenceName, Context.MODE_PRIVATE);
}

@SuppressLint("CommitPrefEdits")
public SharePreferenceTools(Context context, String preferenceName, int mode) {
sharedPreferences = context.getSharedPreferences(preferenceName, mode);
editor = sharedPreferences.edit();
}

public void putString(String key, String value) {
if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) {
editor.putString(key, value);
editor.commit();
}
}

public String getString(String key) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getString(key, null);
}
return value;
}

public String getString(String key, String defaultValue) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getString(key, defaultValue);
}
return value;
}

public void putInt(String key, int value) {
if (!TextUtils.isEmpty(key)) {
editor.putInt(key, value);
editor.commit();
}
}

public int getInt(String key) {
int value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getInt(key, ZERO);
}
return value;
}

public int getInt(String key, int defaultValue) {
int value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getInt(key, defaultValue);
}
return value;
}

public void putBoolean(String key, boolean value) {
if (!TextUtils.isEmpty(key)) {
editor.putBoolean(key, value);
editor.commit();
}
}

public boolean getBoolean(String key) {
boolean result = false;
if (!TextUtils.isEmpty(key)) {
result = sharedPreferences.getBoolean(key, false);
}
return result;
}

public boolean getBoolean(String key, boolean defaultValue) {
boolean result = defaultValue;
if (!TextUtils.isEmpty(key)) {
result = sharedPreferences.getBoolean(key, defaultValue);
}
return result;
}

public void putLong(String key, long value) {
if (!TextUtils.isEmpty(key)) {
editor.putLong(key, value);
editor.commit();
}
}

public long getLong(String key) {
long value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getLong(key, ZERO);
}
return value;
}

public long getLong(String key, long defaultValue) {
long value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getLong(key, defaultValue);
}
return value;
}

public void putFloat(String key, float value) {
if (!TextUtils.isEmpty(key)) {
editor.putFloat(key, value);
editor.commit();
}
}

public float getFloat(String key) {
float value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getFloat(key, ZERO);
}
return value;
}

public float getFloat(String key, float defaultValue) {
float value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getFloat(key, defaultValue);
}
return value;
}

public void putStringSet(String key, Set<String> value) {
if (!TextUtils.isEmpty(key)) {
editor.putStringSet(key, value);
editor.commit();
}
}

public Set<String> getStringSet(String key) {
Set<String> set = null;
if (!TextUtils.isEmpty(key)) {
set = sharedPreferences.getStringSet(key, null);
}
return set;
}

public Set<String> getStringSet(String key, Set<String> defaultValue) {
Set<String> set = defaultValue;
if (!TextUtils.isEmpty(key)) {
set = sharedPreferences.getStringSet(key, defaultValue);
}
return set;
}

/**
* 添加对象
*
* @param key
* @param t
*/
public <T> void putModel(String key, T t) {
if (!TextUtils.isEmpty(key) && t != null) {
putString(key, JSON.toJSONString(t));// fastjson
}
}

/**
* 获取对象
*
* @param key
* @param t
* @return
*/
public <T> T getModel(String key, Class<T> clazz) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = getString(key);
}
return TextUtils.isEmpty(value) ? null : JSON.parseObject(value, clazz);// fastjson
}

/**
* 添加集合
*
* @param key
* @param t
*/
public <T> void putModels(String key, List<T> t) {
if (!TextUtils.isEmpty(key) && t != null && t.size() > ZERO) {
putString(key, JSON.toJSONString(t));// fastjson
}
}

/**
* 获取集合
*
* @param key
* @param t
* @return
*/
public <T> List<T> getModels(String key, Class<T> clazz) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = getString(key);
}
return TextUtils.isEmpty(value) ? null : JSON.parseArray(value, clazz);// fastjson
}

/**
* 查询某个key是否已经存在
*
* @param key
* @return
*/
public boolean contains(String key) {
return sharedPreferences.contains(key);
}

/**
* 移除某个key值已经对应的值
*
* @param key
*/
public void remove(String key) {
editor.remove(key);
editor.commit();
}

/**
* 清除所有数据
*/
public void clear() {
editor.clear();
editor.commit();
}

/**
* 返回所有的键值对
*
* @return
*/
public Map<String, ?> getAll() {
return sharedPreferences.getAll();
}

/**
* 日志输出所有键值对
*/
public void selectKeyAll() {
Map<String, Object> map = (Map<String, Object>) sharedPreferences.getAll();
for (String key : map.keySet()) {
Print.d("key= " + key + " and value= " + map.get(key));
}
}
}

SharePreference 工具类封装的更多相关文章

  1. 关于TornadoFx和Android的全局配置工具类封装实现及思路解析

    原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...

  2. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  3. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  4. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  5. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  6. (转载) 百度地图工具类封装(包括定位,附近、城市、范围poi检索,反地理编码)

    目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选      程序员8月书讯      项目管理+代码托管+文档协作,开发更流畅 百度地图工具类封装(包括定位,附近.城市.范围poi检索, ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战

    笔记 4.Redis工具类封装讲解和实战     简介:高效开发方式 Redis工具类封装讲解和实战         1.常用客户端 https://redisdesktop.com/download ...

  8. flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习

    1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...

  9. Android Sqlite 工具类封装

    鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...

随机推荐

  1. js原型基础

    js中的原型链是实现继承等面向对象的一种方式,而我这里不详细展开,仅仅是画了一张原型部分结构图,主要说明: 1._proto_和prototype之间的关系 2.原型链的起点是Object.proto ...

  2. jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用

    先用谷歌浏览器抓包,抓到的包类似这样: 在jmeter里添加一个http请求,配置好参数,方法,端口,路径等, 勾选 在“同请求一起发送参数”里填写上面抓包的部分数据: 分别对应录入,勾选“编码” 我 ...

  3. MacBook Pro/Air 下使用 linux ubuntu 系统 波浪号“~”变成其他 符号 的完美解决办法

    打开终端,输入: sudo su - > /sys/module/hid_apple/parameters/iso_layout sudo su -需要root权限,所以使用前请注意已下载roo ...

  4. JS定时程序,设定一个一直刷新,又时间间隔的js,读取当前的时间并显示

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  5. Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697

    详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...

  6. 登陆+注册(三层+sql语句)

    啰嗦:今天面试,遇到这个上级测试,很容易的,因为一个错误,居然最后没做出来,心累 回到家,1小时做完,我特么还加了密,我还验证,可是上天不给我一次重来的机会啊 很垃圾的,小白可以看看,大神可以轻喷 首 ...

  7. cakephp 打印出SQL语句

    最近一直在使用cakephp这个框架学习,最近发现了一些问题,就是怎样将SQL语句打印出来进行调试,方法如下: $db=ConnectionManager::getDataSource('defaul ...

  8. C# 异常处理 <-> 连接远程数据库遇到的问题

    PS : 移植类库需要重新生成解决方案:(要不然不能将类库添加进项目)

  9. hive中拉链表

    在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间. 拉链表适用于以下几种情况吧 数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业 ...

  10. 解锁scott用户及设置密码

    关于Oracle 10g scott用户解锁的方法两则 解决方法一. 首先确认已经安装oracle 数据库和客户端 在客户端DOS下执行如下语句: 注意提示符号 c:\sqlplus /nolog s ...