android学习笔记(5)-SharedPreferences方式保存用户喜好参数(附pull解析Xml文档详解)
来源:互联网 发布:医院管理培训课程网络 编辑:程序博客网 时间:2024/06/05 05:49
SharedPreferences保存用户喜好参数
很多时候我们需要对处理的数据进行存储,以供再次访问,这里介绍一种数据存储方式
sharedPreferences对象可以通过上下文对象得到,第一个参数为保存成为的xml文件名称,第二个参数为处理类型。
如上代码,通过SharedPreferences对象获取数据
(1) 要传入的InputStream 可以通过InputStream xml = this.getClass().getClassLoader().getResourceAsStream("baobao.xml")得到
该类的关键方法 1,setOutput() 设置输出的xml 第一个参数为OutputStream 第二个是编码
SharedPreferences 他是一个较轻量级的存储类,以xml文件保存,内存资源占用比较的少。下面介绍用法
1. 存储数据
//@param name 指定xml的文件名//@param mode SharedPreferences preferences = context.getSharedPreferences("Pangxiaobao", Context.MODE_PRIVATE);//编辑器对象Editor editor = preferences.edit();editor.putString("name", name);editor.putInt("age", age);editor.commit();
sharedPreferences对象可以通过上下文对象得到,第一个参数为保存成为的xml文件名称,第二个参数为处理类型。
通过编辑器对象写入数据,注意最后一定要commit
最终形成的xml文件在/data/data/PACKAGE_NAME /shared_prefs 目录下
2.获取数据
public Map<String,String> getPreferences(){Map<String,String> params = new HashMap<String ,String>();SharedPreferences preferences = context.getSharedPreferences("Pangxiaobao", Context.MODE_PRIVATE);preferences.getInt("age", 0);params.put("name", preferences.getString("name", ""));params.put("age", String.valueOf(preferences.getInt("age", 0)));return params;}
如上代码,通过SharedPreferences对象获取数据
get方法的第一个是参数名称,第二个是默认值(如果该参数不存在)
简单的用法就是这样了
附录 pull解析
先附上要解析的xml文件
<?xml version="1.0" encoding="UTF-8"?><baobaos> <baobao id="10"> <name>A</name> <age>21</age> </baobao> <baobao id="20"> <name>B</name> <age>20</age> </baobao></baobaos>
1 解析xml文件的代码
/** * 解析xml文件 * @param xml输入方向 * @return * @throws Exception */public static ArrayList<Baobao> getBaobaos(InputStream xml)throws Exception{ArrayList<Baobao> Baobaos = null;Baobao baobao = null;XmlPullParser pullParser = Xml.newPullParser();//得到pull解析器pullParser.setInput(xml, "utf-8");//设置要解析的xml文件while(pullParser.getEventType()!= XmlPullParser.END_DOCUMENT){switch(pullParser.getEventType()){case XmlPullParser.START_DOCUMENT:Baobaos = new ArrayList<Baobao>();break;case XmlPullParser.START_TAG:if("baobao".equals(pullParser.getName())){int id = new Integer(pullParser.getAttributeValue(0));baobao.setId(id);}if("name".equals(pullParser.getName())){String name = pullParser.nextText();baobao.setName(name);}if("age".equals(pullParser.getName())){int age = new Integer(pullParser.getAttributeValue(0));baobao.setAge(age);}break;case XmlPullParser.END_TAG:if("baobao".equals(pullParser.getName())){Baobaos.add(baobao);}break;}pullParser.next();}return Baobaos;}
(1) 要传入的InputStream 可以通过InputStream xml = this.getClass().getClassLoader().getResourceAsStream("baobao.xml")得到
(2)XmlPullParser可以通过Xml类得到
(3)XmlPullParser的关键方法 1,next() 解析下一个节点
2,getEventType() 得到解析的节点的类型
XmlPullParser.START_DOCUMENT文档起始节点
XmlPullParser.START_TAG元素起始节点
XmlPullParser.END_TAG元素结束节点
XmlPullParser.END_DOCUMENT文档结束节点
3,nextText()得到文本节点 如name的值 A
4,getAttributeValue(int index) 得到属性的值,index表示第几个属性(0开始)
5,setInput(InputStream xml,编码方式)设置读取的xml文件
6,getName()得到当前解析的节点的值
2.保存数据到xml文件的方法
通过XmlSerializer类来实现
public static void saveToXml(ArrayList<Baobao> Baobaos,OutputStream writer) throws Exception{XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(writer, "utf-8");serializer.startDocument("utf-8", true);serializer.startTag(null, "baobaos");for(Baobao baobao : Baobaos){serializer.startTag(null, "baobao");serializer.attribute(null, "id", baobao.getId().toString());serializer.startTag(null, "name");serializer.text(baobao.getName());serializer.endTag(null, "name");serializer.startTag(null, "age");serializer.text(baobao.getAge().toString());serializer.endTag(null, "age");serializer.endTag(null, "baobao");}serializer.endTag(null, "baobaos");serializer.endDocument();writer.flush();writer.close();}
该类的关键方法 1,setOutput() 设置输出的xml 第一个参数为OutputStream 第二个是编码
2,startDocument() 写上文档起始节点 第一个参数是编码 ,第二个参数忘记了。。
3,startTag() endTag()写上元素起始节点与结束节点 第一个参数是命民空间 第二个蚕食是节点的名称
4,text() 写上文本节点的值
5,attribute() 第一个参数为命名空间 第二个参数属性的名称 第三个参数是属性的值
- android学习笔记(5)-SharedPreferences方式保存用户喜好参数(附pull解析Xml文档详解)
- Android中PULL解析XML文档【Android学习笔记】
- android 保存用户喜好设置
- Android学习笔记:Pull解析XML
- android学习笔记之-xml pull解析
- Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数
- android Pull解析xml文档
- Android解析XML(PULL方式)
- Android解析XML(PULL方式)
- Android解析XML(PULL方式)
- Android Pull方式解析XML
- android pull 解析xml方式
- android pull 解析xml方式
- Android解析XML(PULL方式)
- android pull 解析xml方式
- Android XML解析学习—Pull方式(HttpURLConnection xml)
- Android学习笔记(16)————Android的XML解析之pull方式
- Android学习笔记---用SharedPreferences保存用户偏好
- HDU - 4681 String
- 以水仙花数论C++中while和if的区别
- iOS应用崩溃日志揭秘
- LINUX命令记录(个人)
- Facebook首席运营官桑德伯格在2012哈佛商学院毕业典礼上的演讲
- android学习笔记(5)-SharedPreferences方式保存用户喜好参数(附pull解析Xml文档详解)
- 安装SQL 2000出现问题
- PHP基础(二)
- C/C++连接MySql数据库
- c# datagridview 基本操作 (windows form)
- 看到一個簡單但有問題的腳本。不影響觀看
- Android 之 内存管理
- OpenStack Basic Concepts
- Android 之ActivityThead、ActivityManagerService 与activity的管理和创建