1 package com.example.spinnerdemo; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.view.View; 6 import android.widget.AdapterView; 7 import android.widget.ArrayAdapter; 8 import android.widget.Spinner; 9 10 public class MainActivity extends Activity { 11 12 private Spinner provinceSpinner = null; // 省(省、直辖市) 13 private Spinner citySpinner = null; // 市 14 private Spinner countrySpinner = null; // 区 15 16 private ArrayAdapter<String> provinceAdapter = null; // 省 17 private ArrayAdapter<String> cityAdapter = null; // 市 18 private ArrayAdapter<String> countryAdapter = null; // 区 19 20 private int provincePosition = 3; 21 22 // 省级选项值 23 private String[] province = new String[] { "北京", "上海", "天津", "广东" };// ,"重庆","黑龙江","江苏","山东","浙江","香港","澳门"}; 24 25 // 市级选项值 26 private String[][] city = new String[][] { 27 { "东城区", "西城区", "崇文区", "宣武区", "朝阳区", "海淀区", "丰台区", "石景山区", "门头沟区","房山区", "通州区", "顺义区", "大兴区", "昌平区", "平谷区", "怀柔区", "密云县","延庆县" }, 28 { "长宁区", "静安区", "普陀区", "闸北区", "虹口区" }, 29 { "和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区","东丽区" }, 30 { "广州", "深圳", "韶关" // ,"珠海","汕头","佛山","湛江","肇庆","江门","茂名","惠州","梅州", 31 // "汕尾","河源","阳江","清远","东莞","中山","潮州","揭阳","云浮" 32 } }; 33 34 // 区县级选项值 35 private String[][][] country = new String[][][] 36 { 37 { //北京 38 {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}, 39 {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"} 40 }, 41 { //上海 42 {"无"},{"无"},{"无"},{"无"},{"无"} 43 }, 44 { //天津 45 {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"} 46 }, 47 { //广东 48 {"海珠区","荔湾区","越秀区","白云区","萝岗区","天河区","黄埔区","花都区","从化市","增城市","番禺区","南沙区"}, //广州 49 {"宝安区","福田区","龙岗区","罗湖区","南山区","盐田区"}, //深圳 50 {"武江区","浈江区","曲江区","乐昌市","南雄市","始兴县","仁化县","翁源县","新丰县","乳源县"} //韶关 51 } 52 }; 53 54 55 @Override 56 protected void onCreate(Bundle savedInstanceState) { 57 super.onCreate(savedInstanceState); 58 59 setContentView(R.layout.activity_main); 60 61 provinceSpinner = (Spinner) findViewById(R.id.spinner_province); 62 citySpinner = (Spinner) findViewById(R.id.spinner_city); 63 countrySpinner = (Spinner) findViewById(R.id.spinner_country); 64 65 // 装载适配器和值 66 provinceAdapter = new ArrayAdapter<String>(this, 67 android.R.layout.simple_spinner_item, province); 68 provinceSpinner.setAdapter(provinceAdapter); 69 70 cityAdapter = new ArrayAdapter<String>(this, 71 android.R.layout.simple_spinner_item, city[3]); 72 citySpinner.setAdapter(cityAdapter); 73 74 countryAdapter = new ArrayAdapter<String>(this, 75 android.R.layout.simple_spinner_item, country[3][0]); 76 countrySpinner.setAdapter(countryAdapter); 77 78 // 省下拉框监听 79 provinceSpinner 80 .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 81 82 @Override 83 public void onItemSelected(AdapterView<?> arg0, View arg1, 84 int position, long arg3) { 85 86 cityAdapter = new ArrayAdapter<String>( 87 getApplication(), 88 android.R.layout.simple_spinner_item, 89 city[position]); 90 citySpinner.setAdapter(cityAdapter); 91 92 provincePosition = position; // 记录当前省级序号,留给下面修改县级适配器时用 93 } 94 95 @Override 96 public void onNothingSelected(AdapterView<?> arg0) { 97 98 } 99 100 }); 101 102 // 市级下拉监听 103 citySpinner 104 .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 105 106 @Override 107 public void onItemSelected(AdapterView<?> arg0, View arg1, 108 int position, long arg3) { 109 countryAdapter = new ArrayAdapter<String>( 110 getApplication(), 111 android.R.layout.simple_spinner_item, 112 country[provincePosition][position]); 113 countrySpinner.setAdapter(countryAdapter); 114 } 115 116 @Override 117 public void onNothingSelected(AdapterView<?> arg0) { 118 119 } 120 }); 121 } 122 }
xml:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="#e0e0e0" 6 android:orientation="horizontal" > 7 <Spinner 8 android:id="@+id/spinner_province" 9 android:layout_width="0dip" 10 android:layout_weight="1" 11 android:layout_height="wrap_content" /> 12 13 <Spinner 14 android:id="@+id/spinner_city" 15 android:layout_width="0dip" 16 android:layout_weight="1" 17 android:layout_height="wrap_content" /> 18 19 <Spinner 20 android:id="@+id/spinner_country" 21 android:layout_width="0dip" 22 android:layout_weight="1" 23 android:layout_height="wrap_content" /> 24 </LinearLayout>