做了一个可以查询飞机航班、火车班次的小应用

做得很粗糙,代码量也很少,数据通过调用web service得到。

TrainActivity.java用于输入起点站、终点站,并将输入的值传入下一个Activity
package cn.salesuite.layout;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
* @author Tony Shen
*
*/
public class TrainActivity extends Activity{

int REQUEST_CODE=2;
Button queryButton; //查询按钮

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
setTitle("火车班次查询");
super.onCreate(savedInstanceState);
setContentView(R.layout.train);

queryButton = (Button) findViewById(R.id.query);
queryButton.setOnClickListener(queryListener);
}

// query按钮监听器
OnClickListener queryListener = new OnClickListener() {
public void onClick(View v) {
CharSequence firstStationValue = ((EditText) findViewById(R.id.firstStation)).getText();
CharSequence lastStationValue = ((EditText) findViewById(R.id.lastStation)).getText();
String temp = firstStationValue.toString() + "," + lastStationValue.toString();
Intent intent = new Intent(TrainActivity.this, ListTrainActivity.class);
intent.setData(Uri.parse(temp));
startActivityForResult(intent, REQUEST_CODE);//以传递参数的方式跳转到下一个Activity
}
};

}



ListTrainActivity.java用于显示所有的查询出来的火车航班,通过dom4j来解析xml
package cn.salesuite.layout;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpProtocolParams;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

/**
* @author Tony Shen
*
*/
public class ListTrainActivity extends Activity {

private List<Map<String, Object>> data;
private ListView listView = null;
SimpleAdapter adapter = null;
String responseBody = null;
Intent intent;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
setTitle("个人生活助理beta");
super.onCreate(savedInstanceState);
listView = new ListView(this);

intent=ListTrainActivity.this.getIntent();
String tmp=intent.getDataString();
String[] stations= tmp.split(",");

try {
responseBody = parseTrain(stations[0], stations[1]);
} catch (Exception e) {
e.printStackTrace();
}

PrepareData(responseBody);

// 利用系统的layout显示一项
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.train_row, new String[] { "TrainCode", "FirstStation","LastStation", "StartTime", "ArriveTime" },
new int[] {R.id.text1, R.id.text2, R.id.text3, R.id.text4,R.id.text5 });
listView.setAdapter(adapter);
setContentView(listView);

OnItemClickListener listener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
setTitle(parent.getItemAtPosition(position).toString());
}
};
listView.setOnItemClickListener(listener);
}

protected String parseTrain(String firstStation, String lastStation)
throws Exception {
String url = "/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName";
String host = "www.webxml.com.cn";
String param = "StartStation="
+ URLEncoder.encode(firstStation, "utf-8") + "&ArriveStation="
+ URLEncoder.encode(lastStation, "utf-8") + "&userID=";

HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
HttpProtocolParams.HTTP_CONTENT_CHARSET, "UTF-8");

HttpGet httpget = new HttpGet("http://" + host + url + "?" + param);

ResponseHandler<String> responseHandler = new BasicResponseHandler();
return httpclient.execute(httpget, responseHandler);
}

private void PrepareData(String responseBody) {
data = new ArrayList<Map<String, Object>>();
Map<String, Object> item;
Document document;
try {
document = DocumentHelper.parseText(responseBody);
Element root = document.getRootElement();
Iterator it = root.element("diffgram").element("getStationAndTime").elementIterator("TimeTable");
while (it.hasNext()) {
Element info = (Element) it.next();
item = new HashMap<String, Object>();
item.put("TrainCode", info.elementText("TrainCode"));
item.put("FirstStation", info.elementText("FirstStation"));
item.put("LastStation", info.elementText("LastStation"));
item.put("StartTime", info.elementText("StartTime"));
item.put("ArriveTime", info.elementText("ArriveTime"));
data.add(item);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}



飞机航班的做法很类似,下面上效果图

[img]http://dl.iteye.com/upload/attachment/206225/37084377-4208-3b55-8716-a2241dfb1ffb.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/206227/e734a2dc-ccf0-3429-9030-d276267dd05d.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/206229/a0a9c815-e42d-37c9-b33c-86504b265bcf.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/206231/21a0c265-b81a-381f-a4f7-65fb4bd9afe4.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/206233/b050f450-0343-3d5d-bd51-4673d1b67bcd.jpg[/img]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值