还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
议实验成绩教师填写参照如下页面设计效果,设计一个App』用界面「完成数据存储及解析的相关操作爰求:1要为登录界面添加记住我的复选框,当复选框选中时,使用SharedPreferences存储类在合适的时机实现登录名和密码的保存,下次登录时直接登录2登录成功后显示多个城市的天气预报效果天气信息使用XML文档和JSON文档两种方式实现,并在程序中解析使用3设计程序界面,添加两个按钮,单击按钮1将Listweatherlist;序列化为XML文档单击按钮2将Listweatherlist;生成JSON数据文件以当前的weather数据模型为例.预习内容UI界面设计,Intent对象使用,SharedPreferences存储类的使用过程,XML文件的序列化及PULL解析,JSON对象,JSON数组的定义和使用,JSON文件的生成和解析.实验类型验证型.实验目的1掌握Intent启动Activityo2掌握SharedPreferences存储数据流程3掌握XML和JSON数据文件的序列化和解析PULL和Gson.实验要求1打开AS环境,创建Android项目使用布局文档XML完成UI界面的设计,按照实验内容要求,完成Activity的逻辑事件处理2完成实验内容要求并进行测试,分析结果3整理自己对XML和Json文档的生成和解析的相关类,作为工具类留用••••••••••••••••••••••••••••••••••6实验过程源文件、步骤及结果分析packagecom.example.android.saveqq;importandroid.content.Context;importandroid.content.Intent;importandroidcontent.SharedPreferences;importandroid.support.v
7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.CheckBox;importandroid.widget.EditText;importstaticandroid.R.id.edit;publicclassLoginActivityextendsAppCompatActivity{@OverrideprotectedvoidonStart{super.onStart;SharedPreferencessp=getApplicationcontext.getSharedPreferencesdata”,Context.MODE_PRIVATE;Stringusername=sp.getStringHnamennull;Stringpass=sp.getString^pwd11null;name.setTextusername;password.setTextpass;ifusername!=nullpass!=null{checkBox.setCheckedtrue;EditTextnamepassword;@OverrideprotectedvoidonCreateBundlesavedlnstanceState{super.onCreatesavedlnstanceState;setContentviewR.layout.activity_login;name=EditTextfindViewByldR.id.et_name;password=EditTextfindViewByldR.id.et_password;checkBox=CheckBoxfindViewByldR.id.re_check;button=ButtonfindViewByldR.id.btn_login;button.setOnClickListenernewView.OnClickListener{@OverridepublicvoidonClickViewv{Intentintent=newIntentLoginActivity.thisMainActivity.class;startActivityintent;};@OverrideprotectedvoidonStop{super.onStop;SharedPreferencessp=getApplicationcontext.getSharedPreferencesdataContext.MODE_PRIVATE;SharedPreferences.Editoredit=sp・edit;ifcheckBox.isChecked{edit・putStringnamename.getText.toString;edit・putStringpwd”password.getText.toString;e}lse{edit・clear;edit・commit;I7■s”Sav«QQHW123packagecom.example.android.weatherl;importandroid.support.v
7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.ImageView;importandroid.widget.Textview;importandroid.widget.Toast;importjava.io.Inputstream;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener{privateTextViewtvCity;privateTextViewtvWeather;privateTextViewtvTemp;privateTextViewtvWind;privateTextViewtvPm;privateImageViewivIcon;privateMapcstringStringmap;privateListMapStringStringlist;privateStringtempweathernamepmwind;@OverrideprotectedvoidonCreateBundlesavedinstanceState{super.onCreatesavedinstanceState;setContentViewR.layout.activity_main;initView;try//Inputstreamis=this.getResources.openRawResourceR.raw.weather1;//ListWeatherlnfoweatherinfosWeatherService.getlnfosFromXMLis;Inputstreamis=this・getResources.openRawResourceR.raw.weather2;ListWeatherlnfoweatherinfosWeatherService.getlnfosFromJsonis;list=newArrayListMapStringString;forWeatherinfoinfo:weatherinfos{map=newHashMapStringfString;mapputtemp”,info.getTemp;mapputnweatherninfo・getWeather;mapputname”,infogetName;map・putpm”info.getPm;map・putwindinfo・getWind;list.addmap;}catchExceptione{eprintStackTrace;Toast.makeTextthis”解析信息失败”Toast.LENGTH_SHORT.show;getMap1R.drawable.sun;privatevoidinitView{tvCity=TextviewfindViewByldR.id.tv_city;tvWeather=TextviewfindViewByldR.id.tv_weather;tvTemp=TextviewfindViewByldR.id.tv_temp;tvWind=TextviewfindViewByldR.id.tv_wind;tvPm=TextviewfindViewByldR.id.tvpm;ivlcon=ImageviewfindViewByldR.id.iv_icon;findViewByldR.id.btn_bj.setOnClickListenerthis;findViewByldR.id.btn_sh.setOnClickListenerthis;findViewByldR.id.btn_gz.setOnClickListenerthis;@OverridepublicvoidonClickViewv{switchv.getld{caseR.id.btn_sh:getMap0R.drawable.cloud_sun;break;caseR.id.btn_bj:getMap1R.drawable.sun;break;caseR.id.btn_gz:getMap2R.drawable.clouds;break;}privatevoidgetMapintnumberinticonNumber{MapStringfStringcityMap=list.getnumber;temp=cityMap.getntemp11;weather=cityMapgatweather;name=cityMap.getname;pm=cityMap.getnpmn;wind=cityMap.getnwindn;tvCity.setTextname;tvWeather.setTextweather;tvTemp.setTextnn+temp;tvWind.s㊀tT㊀xt风力”+wind;tvPm.setTextnpm+pm;ivlcon.setImageResourceiconNumber;packagecom.example.android.weatherl;importandroid.util.Xml;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;importorg.xmlpull.vl.XmlPullParser;importjava.io.lOException;importjava.io.Inputstream;import㊀f1㊀ct.Type;importjava.util.ArrayList;importjava.util.List;publicclassWeatherService{publicstaticListWeatherlnfogetlnfosFromXMLInputstreamisthrowsException{XmlPullParserparser=xml.newPullParser;parser.setlnputisnutf-8n;ListWeatherlnfoweatherinfos=null;Weatherlnfoweatherlnfo=null;inttype=parser.getEventType;whiletype!=XmlPullParser.END_DOCUMENT{switchtype{caseXmlPullParser.START_TAG:ifinfos・equalsparser.getName{weatherinfos=newArrayListWeatherInfo;els}eifcity・equalsparser.getName{weatherinfo=newWeatherinfo;StringidStr=parser.getAttributevalue0;weatherlnfo.setldidStr;els}eiftemp”・equalspars㊀r.getName{Stringtemp=parser.nextText;w㊀ath㊀rlnfos㊀tTemptemp;els}eifweather・equalsparser.getName{Stringweather=parser.nextText;weatherlnfo.setWeatherweather;els}eif“name”.equalsparser.getName{Stringname=parser.nextText;weatherinfo.setNamename;els}eifpm・equalsparser.getNameStrpimngparser.nextText;weatherInfo.setPmpm;els}eifwind”.equalsparser.getName{Stringwind=parser.nextText;weatherinfo.setWindwind;break;caseXmlPullParser.END_TAG:ifcity・equalsparser.getName{weatherInfos.addweatherlnfo;weatherinfo=null;break;typ=eparser.next;returnweatherinfos;}publicstaticListWeatherlnfog㊀t工nfosFromJsonInputstreamisthrowslOException{byte[]buffer=newbyte[is.available];is.readbuffer;StringjsonnewStringbuffernutf-8n;Gsongson=newGson;TypelistType=newTypeTokenListWeatherInfo{}.getType;ListWeatherlnfoweatherinfos=gson.fromJsonjsonlistType;returnweatherinfos;{temp”:n20℃/30℃nz11weathern:晴转多云,name:上海“pm““80“,“wind”:H1级”}{“temp”15℃/24℃\nweathern:“晴“,“name””北京“,“pm”:“98,“wind““3级“}{temp”n26℃/32℃nznweathern:“多云,name“广州“,“pm”:“30,wind““2级”Jxmlversion=nl.0nencoding=nutf-8ninfoscityid=fshntemp20℃/30℃/temp〈weather〉晴转多云〈/weather〉〈name〉上海/namepm80/pmwindl级/wind〉/citycityid=bjntemp26℃/32℃/temp〈weather〉晴〈/weather〉name北京/namepm98/pmwind3级/wind/citycityid=gztemp15℃/24℃/temp〈weather〉多云〈/weather〉〈name〉广州〈/name〉pm30/pmwind5级/wind/city/infosWwetMrWeatherWeather北京上海2TC/92V1pm99*广州2frc/3trc、IFi5r/24rK10pm
307.实验总结(程序调试体味、收获)此次实验主要巩固了数据存储方面的知识,学会了多种数据存储的方式,并且应用到了应用之中,更好理解了json和xml文件对数据储存有了初步的应用和更深入的认识,还让我意识到编程方面和知识体系机构方面存在的不足总之,这次试验让我Android编程能力有了一定的提高Android编程技术实验卡片实验编号G280120503实验名称及学时数据存储姓名杨旋班级15级计本1班学号2022024027实验室A304实验情况评4价教师填写。