»ùÓÚAndroidϵͳµÄÊÖ»úÌìÆøÔ¤±¨Èí¼þ±¾¿Æ±ÏÒµÂÛÎÄ ÏÂÔØ±¾ÎÄ

ʱҲµ£ÈÎ×ÅÓû§½»»¥¹Ø¼üµãÒÔ¼°½»»¥Ê¼þ½ÓÊÜÕߵĽÇÉ«¡£ÌìÆøÊµ¿öÔ¤±¨ÏµÍ³³ÌÐò¹¦ÄܱȽϵ¥Ò»£¬ÆäUI Ò²Ïà¶Ô±È½Ï¼òµ¥£¬Ö»ÒªÓÐÒ»¸öÊäÈë¿ò¡¢Ò»¸ö²éѯ°´Å¥ÒÔ¼°Ò»¸öÏÔʾËùÓÐÖйú³ÇÊÐÐÅÏ¢µÄÁÐ±í¼´¿É¡£ÎªÁ˽¨Á¢Android ƽ̨µÄÓû§½çÃæ£¬Ê×ÏÈÒªÔÚPackage Explorer ´°¿ÚÖÐÕ¹¿ªLayout ºóн¨¡£xml Îļþ£¬ÓÃÀ´¶Ô´°¿Ú½çÃæ½øÐв¼¾Ö£¬Ö÷ÒªÓÐϵͳÔËÐеÄÖ÷ÅäÖÃÎļþmain.xml ºÍresult.xml.

Layout ÊÇÒ»ÀàÌØÊâµÄViewGroup ¿Ø¼þ£¬ËüÃDZ¾ÉíûÓÐÈκοÉÏÔʾÄÚÈÝ£¬´æÔÚµÄΩһԭÒò¾ÍÊÇÆäÖеÄÄÚ²¿½á¹¹£¬Äܹ»¸üºÃµØ°Ú·ÅËüµÄ×ӿؼþ¡£±ÈÈçLinearlayout,¿É½«×ӿؼþ°´Ë®Æ½»ò´¹Ö±·½Ïò°´Ë³ÐòÅÅÁÐÏÂÈ¥;Tablelayout,¿ÉÒÔ½«×ӿؼþ°´ÕÕ±í¸ñµÄÐÎʽ£¬Ò»Ã¶Ã¶·ÅÖúÃ;Relativelayout ¸üÁé»î£¬¿ÉÒÔÉ趨¸÷¸ö¿Ø¼þÖ®¼äµÄ¶ÔÆëºÍÅÅÁйØÏµ£¬Êʺ϶¨ÖƸ´ÔӵĽçÃæ¡£ÓÐÁËLayout µÄ´æÔÚ£¬¿Ø¼þºÍ¿Ø¼þÖ®¼ä²»ÔÙÊǸîÁѵشæÔÚ£¬¶øÊǸüÓлúµØ½áºÏÔÚÒ»Æð£¬É趨ÆðÀ´Ò²¸üΪ·½±ã¡£ÔÚ±¾ÊµÀýµÄmain.xml ÎļþÖÐÖ÷ÒªÊÇÌí¼ÓһЩ½çÃæµÄ²¼¾ÖÉèÖã¬ÀýÈçÈçÏ´úÂ룺

android:orientation=\

ÉÏÊö´úÂëÉú³ÉÁËÒ»¸öLinearlayout,¶¨ÒåÁËÒ»¸öEditText ºÍButton,²¢ÇÒÉèÖÃÁËÏà¹ØµÄ²ÎÊý¡£ÔÚAndroid ÖУ¬¿Ø¼þ×îÖØÒªµÄ´óСÊôÐÔÊÇwidth Òªµ÷Óõķ½·¨Ãû¡¢ÃüÃû¿Õ¼äÒÔ¼°Web Service URLÖµ£¬ÆäÔ´´úÂëΪ£º

public static final String SOAP_ACTION= \£©£»

Object result=envelope.getResponse£¨£©£» xmlStr=result.toString£¨£©£» } catch£¨Exception e£© { e.printStackTrace£¨£©£» }

[2] ½âÎöÊý¾ÝÁбí

Android ²Ù×÷ϵͳ¶Ôxml ×Ö·û´®Êý¾ÝµÄ²Ù×÷¹¦ÄܺÜÇ¿£¬ÌṩÁËdom¡¢sax ÒÔ¼°xmlpul 3 ÖÖ·½Ê½¡£Android SDK ÌṩÁËandroid.sax °üÒÔ·½±ãSAX Handler µÄ¿ª·¢£¬¿ÉÓÃÀ´½âÎöxml ½á¹û×Ö·û´®¡£ÔÚ±¾Éè¼ÆÊµÀýµÄCitiesWeatherForecast.java ÎļþÖУ¬½âÎöxml Êý¾Ýʱ£¬ÏÈͨ¹ýRootElement root=new RootElement£¨\£©»ñµÃxml Êý¾ÝµÄ¸ù½Úµã£»È»ºóÔÙѰÕÒÆä×Ó½ÚµãÖ±µ½ÕÒµ½City ×ӽڵ㣬²¢ÉèÖÃÒ»¸ö¼àÌýÆ÷setEndTextElementListener£¨£©À´»ñµÃCity ×Ó½ÚµãµÄÖµ£»×îºóʹÓÃorg.xml.sax µÄSAXParser À´½âÎöxml Êý¾Ý£¬°ÑÊý¾Ý´æÈëList²¢·µ»Ø£º

SAXParserFactory factory=SAXParserFactory.newInstance£¨£©£» SAXParser parser=factory.newSAXParser£¨£©£» XMLReader xmlreader=parser.getXMLReader£¨£©£»

xmlreader.setContentHandler£¨root.getContentHandler£¨£©£©£» InputSource is=new InputSource

£¨new StringBufferInputStream£¨xmlStr£©£©£» xmlreader.parse£¨is£©£»

[3] ÔÚUIÉϳÊÏÖ³ÇÊÐÁбíÊý¾Ý

µ±»ñµÃListÀàÐ͵ÄÊý¾ÝÖ®ºó£¬¾Í¿ÉÒÔ°ÑËü°ó¶¨µ½main.xml ¶¨ÒåµÄListView ×é¼þÉÏ£¬È»ºóʹÓÃListActivity ³ÊÏÖÁбíÊý¾Ý¡£ÔÚCitiesWeatherForecast.java ÖеĴúÂë¶ÎΪ£º List cityList=getAllCitiesNames£¨£©£» setListAdapter£¨new ArrayAdapter£¨this, android.R.layout.simple_list_item_1, cityList£©£©£»

¼´Ê¹Ó÷½·¨setListAdapter£¨£©°ÑÒ»¸öListActivity Ìî³ä½øÈ¥¡£

5.3 Ö÷Òª´úÂë½éÉÜ

5.3.1 Ö÷½çÃæ´úÂ루Óû§½çÃæ£©

package com.xmobileapp.android.weatherforecast;

import java.io.StringBufferInputStream; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map;

import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource; import org.xml.sax.XMLReader;

import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.sax.Element;

import android.sax.EndTextElementListener; import android.sax.RootElement; import android.util.Log; import android.view.View;

import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText;

import android.widget.ListView;

import com.xmobileapp.android.weatherforecast.meta.Constant;

import com.xmobileapp.android.weatherforecast.transport.WebServiceCaller;

public class AndroidWeatherForecast extends ListActivity {

private String cityName;

** Called when the activity is first created. *

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

Button btn = (Button) this.findViewById(R.id.searchBtn); final EditText et = (EditText) this.findViewById(R.id.cityText);

btn.setOnClickListener(new OnClickListener(){

public void onClick(View v) { }

cityName = et.getText().toString(); callWeatherResultActivity(cityName);

});

List cityList = getAllCitiesNames(); setListAdapter(new ArrayAdapter(this,