火车车次查询为例:
package com.scme.activity;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import com.cl.entity.trainInfo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class ResolveActivity extends Activity {
ListView listViewText;
List<trainInfo> train;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.resolve);
final String startCity=this.getIntent().getStringExtra("startCity");
final String enfCity=this.getIntent().getStringExtra("endCity");
new Thread(){
public void run() {
// WebService地址
String url = "http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx";
// soapAction的值
String action = "http://WebXml.com.cn/getStationAndTimeByStationName";
// 方法名
String methodName = "getStationAndTimeByStationName";
// 命名空间
String namespace = "http://WebXml.com.cn/";
//初始化Soap请求对象
SoapObject request=new SoapObject(namespace, methodName);
// 为每个参数赋值
request.addProperty("StartStation", startCity);
request.addProperty("ArriveStation", enfCity);
request.addProperty("UserID", "");
// 创建SoapSerializationEnvelope对象,设置SOAP协议的版本号
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
// 调用的是用C#语言写的WebService
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
// 传输协议对象
HttpTransportSE httpTrans = new HttpTransportSE(url);
//实体类对象集合
train=new ArrayList<trainInfo>();
try {
httpTrans.call(action, envelope);
if (envelope.getResponse() != null) {
// 获取SOAP返回的所有响应内容
SoapObject result = (SoapObject) envelope.bodyIn;
// 取出名称为getStationAndTimeByStationNameResult的标签属性
SoapObject detail = (SoapObject) result
.getProperty("getStationAndTimeByStationNameResult");
// 取出第2大块
SoapObject data = (SoapObject) detail.getProperty(1);
SoapObject airlinesObj = (SoapObject) data.getProperty(0);
for (int i = 0; i < airlinesObj.getPropertyCount();i++) {
// 按照索引i得到每一个AirlinesTime标签属性
SoapObject airlineTimesObj = (SoapObject) airlinesObj
.getProperty(i);
// 获取AirlinesTime下的子标签内容
String TrainCode = airlineTimesObj.getProperty(
"TrainCode").toString();
String FirstStation = airlineTimesObj.getProperty(
"FirstStation").toString();
String LastStation = airlineTimesObj.getProperty(
"LastStation").toString();
String StartStation = airlineTimesObj.getProperty(
"StartStation").toString();
String StartTime = airlineTimesObj.getProperty(
"StartTime").toString();
String ArriveStation = airlineTimesObj.getProperty(
"ArriveStation").toString();
String ArriveTime = airlineTimesObj.getProperty("ArriveTime")
.toString();
String KM = airlineTimesObj.getProperty(
"KM").toString();
String UseDate = airlineTimesObj.getProperty("UseDate")
.toString();
//实例化实体类,将数据添加到实体类中
trainInfo tarinInfo=new trainInfo();
tarinInfo.setTrainCode(TrainCode);
tarinInfo.setFirstStation(FirstStation);
tarinInfo.setLastStation(LastStation);
tarinInfo.setStartStation(StartStation);
tarinInfo.setStartTime(StartTime);
tarinInfo.setArriveStation(ArriveStation);
tarinInfo.setArriveTime(ArriveTime);
tarinInfo.setkM(KM);
tarinInfo.setUseDate(UseDate);
//将实体类对象添加到实体对象集合中
train.add(tarinInfo);
}
//实例化Message
Message msg = new Message();
//设置标示
msg.what = 1;
//调用myHandler更新UI
myHandler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
// 负责消息传递,更新UI
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
// 创建适配器对象
MyDapter adapter = new MyDapter(train);
listViewText = (ListView) findViewById(R.id.listText);
listViewText.setAdapter(adapter);
}
//设置listView每一项单机事件,点击出发详细内容
listViewText.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent();
final trainInfo trains = train.get(position);
intent.putExtra("trains", trains);
intent.setClass(ResolveActivity.this,
showActivity.class);
startActivity(intent);
}
});
};
};
//自定义适配器
public class MyDapter extends BaseAdapter {
private List<trainInfo> train;
public MyDapter(List<trainInfo> train) {
super();
this.train = train;
}
public int getCount() {
// TODO Auto-generated method stub
return train.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return train.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final trainInfo trains = train.get(position);
View view = getLayoutInflater().inflate(R.layout.listitem, null);
TextView number = (TextView) view.findViewById(R.id.number);
TextView FirstStation = (TextView) view.findViewById(R.id.FirstStations);
TextView LastStation = (TextView) view.findViewById(R.id.LastStations);
number.setText(trains.getTrainCode());
FirstStation.setText(trains.getFirstStation());
LastStation.setText(trains.getLastStation());
return view;
}
}
}