SharedPerferences的简单使用

工作需求:
            1、用户第一次进入悬浮,显示小红点
            2、点击之后,红点消失
            3、再次进入时,被点击过的红点不显示,未被点击的红点显示
            ps:所有所属副Button下的条目中的红点只允许显示一次,被点击之后,将永不显示

1、因为SharedPerferences是一种轻量级的数据存放方式,可以存储简单的数据类型(如int、boolean、string),用于这种需求就比较方便。
2、且只用创建一次,在任何一个类中都可以使用,只要在工程内。
3、但是如果是要存储相同的数据类型、多个数据的话,存储的名字就得不一样,否则数据会被一层一层覆盖。不过这也是有解决办法的,据说使用不同的模式效果会不一样。

创建==》put数据
SharedPerferences perference=getContext.getSharedPerferences("REDDOT",Context.MODE_PRIVATE);
Editor editor=perference.edit();
editor.putInt("position",1);
editor.putBoolean()"noRedDot",true);
editor.commit();

使用==》get数据
SharedPerferences perference=getContext.getSharedPerferences("REDDOT",Context.MODE_PRIVATE); 
int position=perference.getInt("position",-1);      //存储时所用的数据名  没有数据时给定的默认值
boolean noRedDot=perference.getBoolean("noRedDot",false);
 
拿到数据后,就可以做你想要的相关操作了。

遇到的问题:
1、使用时,报空值异常, 是因为没有给它们默认值,所以在使用前应先赋值一次。默认小红点是存在的,只有在点击之后才会消失,在itemClick中做操作,改变它的值。
2、因为小红点不止一个,值容易被覆盖,怎么识别呢?
    
int position=perference.getInt("position"+game.getGameId,game.getGameId);      
    boolean noRedDot=perference.getBoolean("noRedDot"+game.getGameId,true);
因为gameId是唯一的,前面的只是string类型字符串,只要用能够标识所有条目的不同地方来区别它们就好了。 

你可能感兴趣的:(SharedPerferences的简单使用)