还剩6页未读,继续阅读
文本内容:
编程技术实验卡片Android实验编号G280120503实验名称及学时数据存储姓名杨旋班级级计本班151学号2022024027实验室A304实验情况评价教师填写4议实验成绩教师填写「参照如下页面设计效果,设计一个』用界面完成数据存储及解析的相关操作爰App求:1要为登录界面添加记住我的复选框,当复选框选中时,使用SharedPreferences存储类在合适的时机实现登录名和密码的保存,下次登录时直接登录2登录成功后显示多个城市的天气预报效果天气信息使用XML文档和JSON文档两LogmPlantActMty种方式实现,并在程序中解析使用3设计程序界面,添加两个按钮,单击按钮1将Listweather list;序列化为XML文档单击按钮2将Listweather list;生成JSON数据文件以当前的weather数据模型为例.预习内容2左码•••UI界面设计,Intent对象使用,SharedPreferences存储类的使用过程,XML文件的序Q记0ffti列化及PULL解析,JSON对象,JSON数组的定义和使用,JSON文件的生成和解析实验类型
3.验证型实验目的
4.1掌握Intent启动Activityo2掌握SharedPreferences存储数据流程3掌握XML和JSON数据文件的序列化和解析PULL和Gson实验要求
5.1打开AS环境,创建Android项目使用布局文档XML完成UI界面的设计,按照实验内容要求,完成Activity的逻辑事件处理2完成实验内容要求并进行测试,分析结果3整理自己对XML和Json文档的生成和解析的相关类,作为工具类留用••••••••••••••••••••••••••••••••••,实验过程源文件、步骤及结果分析6package CheckBoxcheckBox;com.example.android.saveqq;Buttonbutton;import android.content.Context;@Overrideimport android.content.Intent;protected voidonStart{super.import onStart;android,content.SharedPreferen ces;SharedPreferencessp=import getApplicationcontext.getSha,android.support.v
7.app.AppComp redPreferencesdata”atActivity;Context.MODE_PRIVATE;import android.os.Bundle;String username=import android.view.View;sp.getStringH namen,null;import android.widget.Button;String pass=import android.widget.CheckBox;sp.getString^pwd11,null;import android.widget.EditText;name.setText username;password.setTextpass;ifimport staticandroid.R.id.edit;username!=nullpass!=null{checkBox.setCheckedtrue;public classLoginActivityextendsAppCompatActivity{EditTextname,password;@Overrideprotected voidonCreateBundle;savedlnstanceState{}super.onCreatesavedlnstanceSt ate;setContentviewR.layout.activi@Overridety_login;protected voidonStop{name=EditTextsuper.onStop;findViewByldR.id.et_name;SharedPreferencessp=password=EditTextgetApplicationcontext.getShafindViewByldR.id.et_password;redPreferencesdata,checkBox=CheckBoxContext.MODE_PRIVATE;findViewByldR.id.re_check;・SharedPreferences.Editor edit=spbutton=Buttonedit;findViewByldR.id.btn_login;if checkBox.isChecked{button.setOnClickListenernewView.OnClickListener{・edit putStringname,@Overridename.getText.toString;public void onClickView v{・edit putStringpwd”,Intent intent=password.getText.toString;new IntentLoginActivity.this,e}lse{MainActivity.class;・edit clear;startActivityintent;・edit commit;I7■s”Sav«QQ HW123package import java.io.Inputstream;importcom.example.android.weatherl;java.util.ArrayList;importjava.util.HashMap;import importjava.util.List;android.support.v
7.app.AppComp importjava.util.Map;atActivity;public classimport android.os.Bundle;MainActivityextendsimport android.view.View;AppCompatActivityimplementsimportView.OnClickListener{android.view.View.OnClickListe ner;importprivate TextViewtvCity;android.widget.ImageView;private TextViewtvWeather;import android.widget.Textview;private TextViewtvTemp;importandroid.widget.Toast;private TextViewtvWind;・private TextViewtvPm;map putwind,・private ImageViewivIcon;info getWind;private Mapcstring,Stringmap;list.addmap;private ListMapString,Stringlist;}catch Exceptione{private String temp,weather,name,e,printStackTrace;pm,wind;”解析信息失Toast.makeText this,@Override败”,Toast.LENGTH_SHORT.show;protected voidonCreateBundlesavedinstanceState{getMap1,R.drawable.sun;super.onCreatesavedinstanceState;setContentViewR.layout.activi private void initView{ty_main;tvCity=TextviewinitView;findViewByldR.id.tv_city;try tvWeather=Textview//Inputstream is=findViewByldR.id.tv_weather;this.getResources.openRawRes tvTemp=TextviewourceR.raw.weather1;findViewByldR.id.tv_temp;//tvWind=TextviewList WeatherlnfoweatherinfosfindViewByldR.id.tv_wind;tvPm=TextviewWeatherService.getlnfosFromXML is;findViewByldR.id.tv pm;Inputstream is=ivlcon=・this getResources.openRawResImageviewfindViewByldR.id.iourceR.raw.weather2;v_icon;findViewByldR.id.btn_bj.setOList WeatherlnfoweatherinfosnClickListenerthis;findViewByldR.id.btn_sh.setOWeatherService.getlnfosFromJso nnClickListenerthis;is;findViewByldR.id.btn_gz.setOnClickListenerthis;list=new ArrayListMapString,String;for Weatherinfoinfo:weatherinfos{@Override publicvoidonClickViewvmap=new HashMapStringString;f{,map,puttemp”info.getTemp;switch v.getld{case R.id.btn_sh:n nmap,put weather,getMap0,R.drawable.cloud_sun;・info getWeather;break;,map,putname”case R.id.btn_bj:info,getName;getMap1,R.drawable.sun;・map putpm”,info.getPm;break;List WeatherlnfogetlnfosFromX MLcaseR.id.btn_gz:Inputstream is throwsgetMap2,R.drawable.clouds;break;Exception{XmlPullParser parser=xml.};newPullParser parser.setlnputis,n nutf-8;privatevoidgetMapint number,inticonNumber{List WeatherlnfoweatherinfosMapString StringcityMap=f=null;list.getnumber;temp=cityMap.getWeatherlnfoweatherlnfo=null;intntemp11;type=parser.getEventType;weather=cityMap,gatweather;name=cityMap.getname;pm=while type!=n ncityMap.get pm;XmlPullParser.END_DOCUMENTn nwind=cityMap.get wind;{switch type{tvCity.setTextname;tvWeather.setTextweather;case XmlPullParser.START_TAG:if・tvTemp.setTextn n+temp;tvWind.s infosequalsparser.getNa me风力”+㊀㊀tT xtwind;tvPm.{weatherinfos=new nsetTextpm+pm;ArrayListWeatherInfo;ivlcon.setImageResourceiconNuels}ember;・if city equalsparser.getName{weatherinfo=new Weatherinfo;StringpackageidStr=com.example.android.weatherl;parser.getAttributevalue0;weatherlnfo.setldidStr;els}eimport android.util.Xml;・㊀if temp”equalspars r.getName{import com.google.gson.Gson;Stringimporttemp=parser.nextText;com.google.gson.reflect.TypeTo ken;㊀㊀㊀w athrlnfo,s tTemptemp;import els}e・org.xmlpull.vl.XmlPullParser;if weatherequalsparser.getimport java.io.lOException;import Name{㊀㊀Stringjava.io.Inputstream;import f1weather=parser.nextText;ct.Type;importjava.util.ArrayList;;weatherlnfo.setWeatherweather importjava.util.List;els}eif“name”.equalsparser.getName{public classWeatherService{publicStringstaticname=parser.nextText;er.weatherinfo.setNamename;nels}ee・if pmequalsparser.getName xStrpimntgparser.nextText;;weatherInfo.setPmpm;els}e ifwind”.equalsparser.getName{return weatherinfos;}Stringwind=parser.nextText;public staticweatherinfo.setWindwind;工㊀List WeatherlnfogtnfosFromJ break;case XmlPullParser.END_TAG:if sonInputstreamisthrows・cityequalsparser.getNam elOException{byte[]buffer=new byte{weatherInfos.addweatherlnfo;[is.available];weatherinfo=null;is.readbuffer;break;String json newStringn nbuffer,utf-8;tGsongson=new Gson;yType listType=newpTypeTokenListWeatherInfo={}.getType;epList Weatherlnfoweatherinfos=ar gson.fromJsonj son,listType;sreturn weatherinfos;晴转多云,上海℃℃n n11n{temp”:20/30weather:name:z级”},,11,H“pm““80““wind”:1:“晴“,”北京℃℃,,,n n{“temp”15/24\weather“name”级“},,,““pm”:“98“wind““3:“多云,“广州℃℃n n nn{temp”26/32weather namez级”,,““pm”:“30wind““2Jn n〈〉晴〈/〉xml version=l.0weather weatherencoding=n utf-8ninfos北京name/name,f ncity id=sh pm98/pm级℃℃wind3/windtemp20/30/temp/city〈〉晴转多云〈/〉weather weather,,,,cityid=gz〈〉上海name/name℃℃temp15/24/temppm80/pm级〉〈〉多云〈/〉windl/windweather weather〈〉广州〈/〉/cityname name=,ncity idbj pm30/pm级℃℃wind5/windtemp26/32/temp/city/infosWwetMr WeatherWeathe北京上海广州r、2TC/92V12frc/3trc IFi5r/24r pm99*K10pm
30.实验总结(程序调试体味、收获)7此次实验主要巩固了数据存储方面的知识,学会了多种数据存储的方式,并且应用到了应用之中,更好理解了和文件对数json xml据储存有了初步的应用和更深入的认识,还让我意识到编程方面和知识体系机构方面存在的不足总之,这次试验让我编程能力Android有了一定的提高。