简单的android天气预报

package com.ctl;

public class InfoUnit {
	private String cityname = "";
	private String time = "";
	private String temper = "";
	private String weather = "";
	private String wind = "";

	public String getCityname() {
		return cityname;
	}

	public void setCityname(String cityname) {
		this.cityname = cityname;
	}

	public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

	public String getTemper() {
		return temper;
	}

	public void setTemper(String temper) {
		this.temper = temper;
	}

	public String getWeather() {
		return weather;
	}

	public void setWeather(String weather) {
		this.weather = weather;
	}

	public String getWind() {
		return wind;
	}

	public void setWind(String wind) {
		this.wind = wind;
	}
}


主要通过webservice获取相关城市的json格式数据信息,再解析json

//城市天气信息javabean

package com.ctl;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class MainActivity extends Activity {

	private Button btn = null;
	private Spinner spinner = null;
	private TextView textview = null;
	private ProgressDialog pd = null;

	private String cityname = "";
	private String[] citylist = { "北京", "上海", "广州", "深圳", "南京", "南昌", "九江",
			"海口", "大连", "赣州","温哥华" ,"漠河","乌鲁木齐"};

	// webservice相关参数
	private static final String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
	private static final String NAME_SPACE = "http://WebXml.com.cn/";
	private static final String METHOD_NAME = "getWeatherbyCityName";
	private static final String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
	private SoapObject result = null;
	
	private InfoUnit iu = new InfoUnit();

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		initParts();
		initSpinner();
		initBtn();
	}

	/**
	 * 初始化控件
	 */
	private void initParts() {
		btn = (Button) findViewById(R.id.btn);
		textview = (TextView) findViewById(R.id.message);
		spinner = (Spinner) findViewById(R.id.cityname);
	}

	/**
	 * 初始化spinner
	 */
	private void initSpinner() {

		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, citylist);
		adapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(spinner_listener);
	}

	// spinner的事件监听器
	AdapterView.OnItemSelectedListener spinner_listener = new OnItemSelectedListener() {

		@Override
		public void onItemSelected(AdapterView<?> parent, View view,
				int position, long id) {
			cityname = citylist[position].toString();
		}

		@Override
		public void onNothingSelected(AdapterView<?> parent) {
			Toast.makeText(MainActivity.this, "请选择城市", Toast.LENGTH_SHORT)
					.show();
		}
	};

	/**
	 * 初始化按钮
	 */
	private void initBtn() {
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub		
				pd = new ProgressDialog(MainActivity.this);
				pd.setMessage("信息获取中...");
				pd.show();
				new WsasyncWork().execute(null);
				pd.dismiss();
			}
		});
	}

	/**
	 * 与webservice通信的后台程序
	 */
	class WsasyncWork extends AsyncTask {

		@Override
		protected Object doInBackground(Object... params) {
			// TODO Auto-generated method stub
			try {
				System.out.println("-------");
				SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);
				request.addProperty("theCityName", cityname);
				Log.e("TAG", cityname);
				SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
				envelop.dotNet = true;
				envelop.setOutputSoapObject(request);

				HttpTransportSE ht = new HttpTransportSE(URL);
				ht.debug = true;
				ht.call(SOAP_ACTION, envelop);

				result = (SoapObject) envelop.getResponse();
				parseWeather(result);
				textview.post(new Runnable() {
					
					@Override
					public void run() {
						textview.setText("城市名:"+iu.getCityname()+"\n"+"温度:"+iu.getTemper()+"\n"
								+"发布时间:"+iu.getTime()+"\n"+"风力:"+iu.getWind()+"\n"+"天气:"+iu.getWeather());
					}
				});
			} catch (Exception e) {
				Log.e("TAG", "与webservice通信失败.....");
			}

			return result;
		}

	}

	/**
	 * 解析返回的数据
	 */
	private void parseWeather(SoapObject soapObject) {
		iu.setCityname(soapObject.getProperty(1).toString());
		iu.setTemper(soapObject.getProperty(5).toString());
		iu.setTime(soapObject.getProperty(4).toString());
		iu.setWeather(soapObject.getProperty(6).toString());
		iu.setWind(soapObject.getProperty(7).toString());
	}
}

//在异步类中实现数据的获取

  <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
//网络权限
 
//需要导入ksoap包


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值