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

更多相关文章

  1. android的文件、目录操作
  2. Android天气预报详解
  3. Android 4.0系统源码目录结构详解
  4. android仿UC墨迹天气左右拖动效果
  5. 【Android的从零单排开发日记】之入门篇(三)——Android目录结构
  6. android developers api guides 文档学习笔记(目录)
  7. Android drawable 目录下 创建子目录问题
  8. 专题分纲目录 android 系统核心机制 binder
  9. Android 博客目录整理

随机推荐

  1. System.out.println()和Log耗时之比
  2. Android顶部工具栏和底部工具栏的简单实
  3. [android]控件ImageView的常用属性
  4. Android 从零开始打造异步处理框架
  5. LinearLayout中实现水平方向上的两个text
  6. 最全的PHP开发Android应用程序
  7. 用Gradle 构建android程序
  8. 第四周Android实习笔记
  9. 裁判文书android app逆向
  10. Mono for Android V1.0 正式发布啦!