KSOAP解析webService绑定到自定义适配器listView中显示

火车车次查询为例:

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;
   }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值