activity_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Spinner
android:id="@+id/spinner3"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" /> </LinearLayout>

SpinnerActivity.java

package com.wangzhu.demospinner;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView; public class SpinnerActivity extends Activity { private Spinner spinner1, spinner2, spinner3;
private TextView textView1; private ArrayAdapter<String> adapter1, adapter2, adapter3;
private List<String> listData1, listData2, listData3;
private ProgressDialog dialog; private String downloadData; private MyThread myThread1, myThread2, myThread3, myThread4, myThread5;
private MyHandler myHandler;
private String preUri = "http://m.weather.com.cn/data";
private String uri; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner); textView1 = (TextView) findViewById(R.id.textView1);
listData1 = new ArrayList<String>();
listData2 = new ArrayList<String>();
listData3 = new ArrayList<String>(); adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, listData1);
adapter2 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, listData2);
adapter3 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, listData3); spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) { Log.d("TAG", "spinner1 " + position + "=====" + id);
uri = preUri + String.format("5/city%02d", position + 1)
+ ".xml";
init2();
} @Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner1.setAdapter(adapter1); spinner2 = (Spinner) findViewById(R.id.spinner2);
spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.d("TAG", "spinner2 " + position + "=====" + id);
uri = preUri
+ String.format("5/city%02d",
spinner1.getSelectedItemId() + 1)
+ String.format("%02d", position + 1) + ".xml";
init3();
} @Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner2.setAdapter(adapter2); spinner3 = (Spinner) findViewById(R.id.spinner3);
spinner3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.d("TAG", "spinner3 " + position + "=====" + id);
uri = preUri
+ String.format("5/city%02d",
spinner1.getSelectedItemId() + 1)
+ String.format("%02d",
spinner2.getSelectedItemId() + 1)
+ String.format("%02d", position + 1) + ".xml";
init4();
} @Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner3.setAdapter(adapter3); myHandler = new MyHandler();
myThread1 = new MyThread(1);
myThread2 = new MyThread(2);
myThread3 = new MyThread(3);
myThread4 = new MyThread(4);
myThread5 = new MyThread(5);
init1();
} private void init1() {
showDialog("温馨提示", "正在加载第一级目录,请稍候。。。");
uri = "http://m.weather.com.cn/data5/city.xml";
new Thread(myThread1).start();
} private void init2() {
showDialog("温馨提示", "正在更新第二级目录,请稍候。。。");
new Thread(myThread2).start();
} private void init3() {
showDialog("温馨提示", "正在更新第三季目录,请稍后。。。");
new Thread(myThread3).start();
} private void init4() {
showDialog("温馨提示", "正在更新天气,请稍候。。。");
new Thread(myThread4).start();
} private void init5() {
showDialog("温馨提示", "正在更新天气,请稍候。。。");
new Thread(myThread5).start();
} private void showDialog(String title, String msg) {
dialog = new ProgressDialog(SpinnerActivity.this);
dialog.setTitle(title);
dialog.setMessage(msg);
dialog.show();
} private void download(String uri) {
downloadData = null;
try {
URL url = new URL(uri);
// 使用HttpURLConnection打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(2000);
conn.setUseCaches(false);
if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) {
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuffer result = new StringBuffer();
String readLine = null;
while ((readLine = reader.readLine()) != null) {
result.append(readLine);
}
// 关闭InputStream
in.close();
// 关闭http连接
conn.disconnect();
downloadData = result.toString();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} class MyThread implements Runnable {
private int flag; public MyThread(int flag) {
this.flag = flag;
} @Override
public void run() {
// Looper.prepare();
download(uri);
myHandler.sendEmptyMessage(flag);
}
} class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("TAG", uri);
switch (msg.what) {
case 1:
if (null != downloadData) {
Log.d("TAG", downloadData);
String[] dataArr = downloadData.split(",");
for (int i = 0, len = dataArr.length; i < len; i++) {
listData1.add(dataArr[i].substring(3));
}
// adapter1.notifyDataSetChanged(); adapter1 = new ArrayAdapter<String>(SpinnerActivity.this,
android.R.layout.simple_spinner_item, listData1);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1); }
break;
case 2:
if (null != downloadData) {
Log.d("TAG", downloadData);
String[] dataArr = downloadData.split(",");
listData2.clear();
for (int i = 0, len = dataArr.length; i < len; i++) {
listData2.add(dataArr[i].substring(5));
}
// adapter2.notifyDataSetChanged(); adapter2 = new ArrayAdapter<String>(SpinnerActivity.this,
android.R.layout.simple_spinner_item, listData2);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter2); }
break;
case 3:
if (null != downloadData) {
Log.d("TAG", downloadData);
String[] dataArr = downloadData.split(",");
listData3.clear();
for (int i = 0, len = dataArr.length; i < len; i++) {
listData3.add(dataArr[i].substring(7));
}
// adapter3.notifyDataSetChanged(); adapter3 = new ArrayAdapter<String>(SpinnerActivity.this,
android.R.layout.simple_spinner_item, listData3);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner3.setAdapter(adapter3); }
break;
case 4:
if (null != downloadData) {
Log.d("TAG", downloadData);
dialog.dismiss();
uri = preUri + "/" + downloadData.substring(7) + ".html";
init5();
}
break;
case 5:
if (null != downloadData) {
Log.d("TAG", downloadData);
textView1.setText(downloadData);
}
break;
}
dialog.dismiss();
}
}
}

Android Spinner(级联 天气预报)的更多相关文章

  1. android Spinner 续

    android Spinner 续 动态增删Spinner中的数据项 public class EX04_09 extends Activity{  private static final Stri ...

  2. Xamarin android spinner的使用方法

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  3. Android spinner 样式及其使用详解

    设计与开发首页 > 应用专题 > 移动开发 > 正文> Android spinner 样式及其使用详解 相关文章: Android 开源项目应用程序与框架推荐 Android ...

  4. Android Spinner In Toolbar

    As the title of the post suggest in this tutorial we will see how to have spinner widget inside the ...

  5. 基于Android开发的天气预报app(源码下载)

    原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...

  6. Android Spinner 下拉框简单应用 详细注解

    目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...

  7. android Spinner的简单用法

    上代码: spinner = (Spinner) findViewById(R.id.spinner); tv = (TextView) findViewById(R.id.tv); final Ar ...

  8. Android spinner控件

    spinner控件是Android中下拉控件,现在介绍它两种用法.第一种,从资源文件中获取下拉值:第二种,从代码中获取下拉值. 第一种,首先要在资源文件中把值写好: <?xml version= ...

  9. android Spinner的使用

    首先是MainActivity package com.example.spinnertest; import java.util.ArrayList; import java.util.List; ...

随机推荐

  1. ASP.NET实现折线图的绘制

    用到.Net中绘图类,实现折线图的绘制,生成图片,在页面的显示,代码如下: /// <summary> /// 获取数据 /// strChartName:图名称: /// yName:纵 ...

  2. 【转】Linux网络编程入门

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  3. 《JSON必知必会》

    每天上下班在地铁上很适合看这种书,入门级.难点不多.简约不失严谨. 自从全面转向ASP.NET MVC,现在基本上每天都和JSON打交道,效率.习惯.速度都要掌握. 这本书读起来很快,所以读完也蛮有成 ...

  4. 利用多核来加速Linux命令行

    本文转载自 多核CPU来加速 awk, sed, bzip2, grep, wc等,如需查看原文,请点此链接进入. -------------------------------我是分割线 开始 -- ...

  5. 文档生产工具 Doxygen

    Doxygen是一种开源跨平台的,类似JavaDoc风格描述的文档系统,支持C.C++.Java.Objective-C等语言.可以从一套归档源文件开始,生成HTML,XML,pdf等不同风格的格式. ...

  6. 【转】VS2012发布网站详细步骤

    1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自 ...

  7. 多种的android进度条的特效源码

    多种的android进度条的特效源码,这个源码是在源码天堂那个网站上转载过来的,我已经修改一部分了,感觉很实用的,大家可以学习一下吧,我就不上传源码了,大家可以直接到那个网站上下载吧. 源码天堂下载地 ...

  8. winform 与 html 交互 简单案例

    本文主要简单的记录winform如何与html文件中的信息如何进行交互,即在winform中加载html界面,从而可以进行相互调用. 1.新建一个winform项目,若要在winform中加载html ...

  9. AngularJS快速开始

    Hello World! 开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”: 使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html. ...

  10. 1058 A+B in Hogwarts (20)

    #include <stdio.h> int main() { ]; ]; ],&ans1[],&ans1[],&ans2[],&ans2[],&a ...