您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > Android开发教程之使用Android和XML构建动态用户界面(二)
中国移动互联网研发培训专家解析数据是一个非常机械的练习,将在本教程后面展示。在检查解析流程之前,应用程序需要某个位置来在内存中存储和管理这个元数据。出于这个目的,您拥有两个Java类,一个用于表单,一个用于表示表单字段。我们首先查看清单2中的XmlGuiForm.java。中国移动互联网研发培训专家packagecom.msi.ibm;importjava.util.Vector;importjava.util.ListIterator;importjava.net.URLEncoder;publicclassXmlGuiForm{privateStringformNumber;privateStringformName;privateStringsubmitTo;publicVectorXmlGuiFormFieldfields;中国移动互联网研发培训专家publicXmlGuiForm(){this.fields=newVectorXmlGuiFormField();formNumber=;formName=;submitTo=loopback;//donothingbutdisplaytheresults}//getters&setterspublicStringgetFormNumber(){returnformNumber;}publicvoidsetFormNumber(StringformNumber){this.formNumber=formNumber;}中国移动互联网研发培训专家publicStringgetFormName(){returnformName;}publicvoidsetFormName(StringformName){this.formName=formName;}publicStringgetSubmitTo(){returnsubmitTo;}publicvoidsetSubmitTo(StringsubmitTo){this.submitTo=submitTo;}publicVectorXmlGuiFormFieldgetFields(){returnfields;}publicvoidsetFields(VectorXmlGuiFormFieldfields){this.fields=fields;}中国移动互联网研发培训专家publicStringtoString(){StringBuildersb=newStringBuilder();sb.append(XmlGuiForm:\n);sb.append(FormNumber:+this.formNumber+\n);sb.append(FormName:+this.formName+\n);sb.append(SubmitTo:+this.submitTo+\n);if(this.fields==null)returnsb.toString();ListIteratorXmlGuiFormFieldli=this.fields.listIterator();while(li.hasNext()){sb.append(li.next().toString());}returnsb.toString();}中国移动互联网研发培训专家publicStringgetFormattedResults(){StringBuildersb=newStringBuilder();sb.append(Results:\n);if(this.fields==null)returnsb.toString();ListIteratorXmlGuiFormFieldli=this.fields.listIterator();while(li.hasNext()){sb.append(li.next().getFormattedResult()+\n);}returnsb.toString();}中国移动互联网研发培训专家publicStringgetFormEncodedData(){try{inti=0;StringBuildersb=newStringBuilder();sb.append(Results:\n);if(this.fields==null)returnsb.toString();ListIteratorXmlGuiFormFieldli=this.fields.listIterator();while(li.hasNext()){if(i!=0)sb.append(&);XmlGuiFormFieldthisField=li.next();sb.append(thisField.name+=);Stringencstring=newString();URLEncoder.encode((String)thisField.getData(),encstring);sb.append(encstring);}中国移动互联网研发培训专家returnsb.toString();}catch(Exceptione){returnErrorEncoding;}}}中国移动互联网研发培训专家关于XmlGuiForm类,有几个重要项目需要注意:这里有4个成员变量:◦formNumber:这是服务器端表单分发机制的惟一标识符。◦formName:这是表单标题,向用户提供上下文和确认。◦submitTo:这是应用程序提交输入的数据(经过验证)的URL。这个值也可以是一个loopback。在loopback场景中,数据显示给用户,而不是提交到服务器。这对测试比较有用。fields:这是被模板化以持有表单的字段数据的Vector类。清单3展示了XmlGuiFormField.java的细节。中国移动互联网研发培训专家一系列针对这些变量的getters和setters。toString()和getFormattedResults()方法负责生成XmlGuiForm类的可读摘要。getFormEncodedData()方法在准备将数据提交到submitTo属性中指定的URL时使用。这个代码不使用严格连接的java.lang.String类,而是采用一个StringBuilder作为构建理想数据字符串的一个更内存高效的方法。URLEncoder类用于准备将数据提交到服务器。这使得数据实际上看起来就像一个传统HTML表单创建的一样。这个应用程序的一些潜在扩展包括:◦元数据本地存储或缓存使重复任务更快运行。◦本地存储在提交前一段时间内记录数据。◦GPS记录—使用位置数据标记每条记录。现在看看清单3中XmlGuiFormField类的构造情况。中国移动互联网研发培训专家packagecom.msi.ibm;//classtohandleeachindividualformpublicclassXmlGuiFormField{Stringname;Stringlabel;Stringtype;booleanrequired;Stringoptions;Objectobj;//holdstheuiimplementation//ortheEditTextforexample中国移动互联网研发培训专家//getters&setterspublicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetLabel(){returnlabel;}publicvoidsetLabel(Stringlabel){this.label=label;}中国移动互联网研发培训专家publicStringgetType(){returntype;}publicvoidsetType(Stringtype){this.type=type;}publicbooleanisRequired(){returnrequired;}publicvoidsetRequired(booleanrequired){this.required=required;}publicStringgetOptions(){returnoptions;}中国移动互联网研发培训专家publicvoidsetOptions(Stringoptions){this.options=options;}publicStringtoString(){StringBuildersb=newStringBuilder();sb.append(FieldName:+this.name+\n);sb.append(FieldLabel:+this.label+\n);sb.append(FieldType:+this.type+\n);sb.append(Required?:+this.required+\n);sb.append(Options:+this.options+\n);sb.append(Value:+(String)this.getData()+\n);returnsb.toString();}中国移动互联网研发培训专家publicStringgetFormattedResult(){returnthis.name+=[+(String)this.getData()+];}publicObjectgetData(){if(type.equals(text)||type.equals(numeric)){if(obj!=null){XmlGuiEditBoxb=(XmlGuiEditBox)obj;returnb.getValue();}}中国移动互联网研发培训专家if(type.equals(choice))
本文标题:Android开发教程之使用Android和XML构建动态用户界面(二)
链接地址:https://www.777doc.com/doc-2901276 .html