ʱҲµ£ÈÎ×ÅÓû§½»»¥¹Ø¼üµãÒÔ¼°½»»¥Ê¼þ½ÓÊÜÕߵĽÇÉ«¡£ÌìÆøÊµ¿öÔ¤±¨ÏµÍ³³ÌÐò¹¦ÄܱȽϵ¥Ò»£¬Æä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
¼´Ê¹Ó÷½·¨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