Android Spinner(级联 天气预报)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android Spinner(级联 天气预报),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8046字,纯文字阅读大概需要12分钟。
内容图文
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 protectedvoid 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 publicvoid 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 publicvoid onNothingSelected(AdapterView<?> parent) { } }); spinner1.setAdapter(adapter1); spinner2 = (Spinner) findViewById(R.id.spinner2); spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override publicvoid 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 publicvoid onNothingSelected(AdapterView<?> parent) { } }); spinner2.setAdapter(adapter2); spinner3 = (Spinner) findViewById(R.id.spinner3); spinner3.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override publicvoid 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 publicvoid 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(); } privatevoid init1() { showDialog("温馨提示", "正在加载第一级目录,请稍候。。。"); uri = "http://m.weather.com.cn/data5/city.xml"; new Thread(myThread1).start(); } privatevoid init2() { showDialog("温馨提示", "正在更新第二级目录,请稍候。。。"); new Thread(myThread2).start(); } privatevoid init3() { showDialog("温馨提示", "正在更新第三季目录,请稍后。。。"); new Thread(myThread3).start(); } privatevoid init4() { showDialog("温馨提示", "正在更新天气,请稍候。。。"); new Thread(myThread4).start(); } privatevoid init5() { showDialog("温馨提示", "正在更新天气,请稍候。。。"); new Thread(myThread5).start(); } privatevoid showDialog(String title, String msg) { dialog = new ProgressDialog(SpinnerActivity.this); dialog.setTitle(title); dialog.setMessage(msg); dialog.show(); } privatevoid 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 { privateint flag; public MyThread(int flag) { this.flag = flag; } @Override publicvoid run() { // Looper.prepare(); download(uri); myHandler.sendEmptyMessage(flag); } } class MyHandler extends Handler { @Override publicvoid 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(); } } }
原文:http://www.cnblogs.com/xiaoxian1369/p/3705254.html
内容总结
以上是互联网集市为您收集整理的Android Spinner(级联 天气预报)全部内容,希望文章能够帮你解决Android Spinner(级联 天气预报)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】