• Android Spinner(级联 天气预报)


    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();
            }
        }
    }
  • 相关阅读:
    dll劫持提权——本质上类似水坑攻击,就是你替换管理员的某应用加载的dll,权限高的管理员运行该应用就中招了
    64:权限提升Linux定时任务&环境变量&数据库
    redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致
    谜题 奥山的解谜 圣骑士(右上角)
    global.asax Application_AcquireRequestState vs. Application_BeginRequest
    谜题 奥山的解谜  恶魔猎手(左上角)
    pdf merge
    奥山的解谜已解决(三个谜题都已更新解谜方法) 牧师
    How do I sort my Twitter feed by time?
    美团 领域驱动设计在互联网业务开发中的实践
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/3705254.html
Copyright © 2020-2023  润新知