工作需求:
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类型字符串,只要用能够标识所有条目的不同地方来区别它们就好了。
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类型字符串,只要用能够标识所有条目的不同地方来区别它们就好了。