Android实现多层级Spinner列表选项实时更新树形层级
16lz
2021-12-04
Android实现多层级Spinner列表选项实时更新树形层级
运行结果如图:
运行结果如图:
Java代码:
[java] view plain copy
- packagecom.example.spinnerdemo;
- importandroid.os.Bundle;
- importandroid.app.Activity;
- importandroid.view.View;
- importandroid.widget.AdapterView;
- importandroid.widget.ArrayAdapter;
- importandroid.widget.Spinner;
- publicclassMainActivityextendsActivity{
- privateSpinnerprovinceSpinner=null;//省(省、直辖市)
- privateSpinnercitySpinner=null;//市
- privateSpinnercountrySpinner=null;//区
- privateArrayAdapter<String>provinceAdapter=null;//省
- privateArrayAdapter<String>cityAdapter=null;//市
- privateArrayAdapter<String>countryAdapter=null;//区
- privateintprovincePosition=3;
- //省级选项值
- privateString[]province=newString[]{"北京","上海","天津","广东"};//,"重庆","黑龙江","江苏","山东","浙江","香港","澳门"};
- //市级选项值
- privateString[][]city=newString[][]{
- {"东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","门头沟区","房山区","通州区","顺义区","大兴区","昌平区","平谷区","怀柔区","密云县","延庆县"},
- {"长宁区","静安区","普陀区","闸北区","虹口区"},
- {"和平区","河东区","河西区","南开区","河北区","红桥区","塘沽区","汉沽区","大港区","东丽区"},
- {"广州","深圳","韶关"//,"珠海","汕头","佛山","湛江","肇庆","江门","茂名","惠州","梅州",
- //"汕尾","河源","阳江","清远","东莞","中山","潮州","揭阳","云浮"
- }};
- //区县级选项值
- privateString[][][]country=newString[][][]
- {
- {//北京
- {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},
- {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}
- },
- {//上海
- {"无"},{"无"},{"无"},{"无"},{"无"}
- },
- {//天津
- {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}
- },
- {//广东
- {"海珠区","荔湾区","越秀区","白云区","萝岗区","天河区","黄埔区","花都区","从化市","增城市","番禺区","南沙区"},//广州
- {"宝安区","福田区","龙岗区","罗湖区","南山区","盐田区"},//深圳
- {"武江区","浈江区","曲江区","乐昌市","南雄市","始兴县","仁化县","翁源县","新丰县","乳源县"}//韶关
- }
- };
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- provinceSpinner=(Spinner)findViewById(R.id.spinner_province);
- citySpinner=(Spinner)findViewById(R.id.spinner_city);
- countrySpinner=(Spinner)findViewById(R.id.spinner_country);
- //装载适配器和值
- provinceAdapter=newArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item,province);
- provinceSpinner.setAdapter(provinceAdapter);
- cityAdapter=newArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item,city[3]);
- citySpinner.setAdapter(cityAdapter);
- countryAdapter=newArrayAdapter<String>(this,
- android.R.layout.simple_spinner_item,country[3][0]);
- countrySpinner.setAdapter(countryAdapter);
- //省下拉框监听
- provinceSpinner
- .setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
- @Override
- publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,
- intposition,longarg3){
- cityAdapter=newArrayAdapter<String>(
- getApplication(),
- android.R.layout.simple_spinner_item,
- city[position]);
- citySpinner.setAdapter(cityAdapter);
- provincePosition=position;//记录当前省级序号,留给下面修改县级适配器时用
- }
- @Override
- publicvoidonNothingSelected(AdapterView<?>arg0){
- }
- });
- //市级下拉监听
- citySpinner
- .setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
- @Override
- publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,
- intposition,longarg3){
- countryAdapter=newArrayAdapter<String>(
- getApplication(),
- android.R.layout.simple_spinner_item,
- country[provincePosition][position]);
- countrySpinner.setAdapter(countryAdapter);
- }
- @Override
- publicvoidonNothingSelected(AdapterView<?>arg0){
- }
- });
- }
- }
布局文件:
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#e0e0e0"
- android:orientation="horizontal">
- <Spinner
- android:id="@+id/spinner_province"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"/>
- <Spinner
- android:id="@+id/spinner_city"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"/>
- <Spinner
- android:id="@+id/spinner_country"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"/>
- </LinearLayout>
更多相关文章
- Android中的Menu菜单小解
- Android开发实践:如何设置NDK的编译选项
- Android:实现TabWidget选项卡按钮在屏幕下方
- android window类的解释及软输入法模式选项:
- android 添加触摸反馈
- No cached version of com.android.tools.build:gradle:3.6.3 av
- 如何发布android应用程序
- 【Android】Android中选项菜单(OptionMenu)的创建
- Android(安卓)SDK Manager国内下载缓慢的问题