主要实现办法:动态加载各级下拉值的适配器

在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值

先贴出效果图:

主布局代码:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="8dp"><Spinnerandroid:id="@+id/spin_province"android:layout_width="80dp"android:layout_height="wrap_content"/><Spinnerandroid:id="@+id/spin_city"android:layout_width="112dp"android:layout_height="wrap_content"/><Spinnerandroid:id="@+id/spin_county"android:layout_width="100dp"android:layout_height="wrap_content"/></LinearLayout>

主activity代码:

packagecom.yaowen.wheel;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Spinner;importcom.yaowen.android_wheel.R;publicclassWheelActivityextendsAppCompatActivity{privateSpinnerprovinceSpinner=null;//省级(省、直辖市)privateSpinnercitySpinner=null;//地级市privateSpinnercountySpinner=null;//县级(区、县、县级市)ArrayAdapter<String>provinceAdapter=null;//省级适配器ArrayAdapter<String>cityAdapter=null;//地级适配器ArrayAdapter<String>countyAdapter=null;//县级适配器staticintprovincePosition=3;//省级选项值privateString[]province=newString[]{"北京","上海","天津","广东","香港","澳门"};privateString[][]city=newString[][]{{"不限","东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","门头沟区","房山区","通州区","顺义区","大兴区","昌平区","平谷区","怀柔区","密云县","延庆县"},//北京市{"不限","长宁区","静安区","普陀区","闸北区","虹口区"},//上海市{"不限","和平区","河东区","河西区","南开区","河北区","红桥区","塘沽区","汉沽区","大港区","东丽区"},//天津市{"不限","广州","深圳","湛江","韶关","珠海","汕头","佛山","肇庆","江门","茂名","惠州","梅州","汕尾","河源","阳江","清远","东莞","中山","潮州","揭阳","云浮"},//广东省{"全香港"},//香港{"全澳门"}//澳门};privateString[][][]county=newString[][][]{//北京{{"不限"},{"全东城区"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}},//上海{{"不限"},{"无"},{"无"},{"无"},{"无"},{"无"}},//天津{{"不限"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}},//广东{{"不限"},{"海珠区","荔湾区","越秀区","白云区","萝岗区","天河区","黄埔区","花都区","从化市","增城市","番禺区","南沙区"},//广州{"不限","宝安区","福田区","龙岗区","罗湖区","南山区","盐田区"},//深圳{"不限","遂溪县","坡头区","麻章区","吴川市","廉江市","徐闻县","雷州市"},//湛江市{"不限","武江区","浈江区","曲江区","乐昌市","南雄市","始兴县","仁化县","翁源县","新丰县","乳源县"},//韶光},//香港{{"全香港"}},//澳门{{"全澳门"}}};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_wheel);setSpinner();}privatevoidsetSpinner(){//初始化组件provinceSpinner=(Spinner)findViewById(R.id.spin_province);citySpinner=(Spinner)findViewById(R.id.spin_city);countySpinner=(Spinner)findViewById(R.id.spin_county);//绑定provinceAdapter适配器和值provinceAdapter=newArrayAdapter<String>(WheelActivity.this,android.R.layout.simple_spinner_item,province);provinceSpinner.setAdapter(provinceAdapter);provinceSpinner.setSelection(3,true);//设置默认选中项,此处为默认选中第4个值//绑定cityAdapter适配器和值cityAdapter=newArrayAdapter<String>(WheelActivity.this,android.R.layout.simple_spinner_item,city[3]);citySpinner.setAdapter(cityAdapter);citySpinner.setSelection(0,true);//默认选中第0个//绑定countyAdapter适配器和值countyAdapter=newArrayAdapter<String>(WheelActivity.this,android.R.layout.simple_spinner_item,county[3][0]);countySpinner.setAdapter(countyAdapter);countySpinner.setSelection(0,true);provinceSpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){//表示选项被改变的时候触发此方法,主要实现办法:动态改变地级适配器的绑定值@OverridepublicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intposition,longarg3){//position为当前省级选中的值的序号//将地级适配器的值改变为city[position]中的值cityAdapter=newArrayAdapter<String>(WheelActivity.this,android.R.layout.simple_spinner_item,city[position]);//设置二级下拉列表的选项内容适配器citySpinner.setAdapter(cityAdapter);provincePosition=position;//记录当前省级序号,留给下面修改县级适配器时用}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){}});citySpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intposition,longarg3){countyAdapter=newArrayAdapter<String>(WheelActivity.this,android.R.layout.simple_spinner_item,county[provincePosition][position]);countySpinner.setAdapter(countyAdapter);}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){}});}}

代码就这么多,就这么简答!

更多相关文章

  1. Android-Adapter适配器
  2. Android(安卓)RecycleView实现不同样式Item样式效果完美解决
  3. listview与adapter用法
  4. Android中的设计模式--适配器模式
  5. Android(安卓)ListView和ListAdapter
  6. ListView组件的使用
  7. Android对话形式的列表
  8. Android之ListView
  9. Fragment中使用listview

随机推荐

  1. Android(安卓)如何预置APK M
  2. 自定义EditText
  3. Android(安卓)init.rc执行顺序
  4. Android(安卓)studio 的快捷键对应 MAC
  5. android 网络连接 大体走向
  6. Android(安卓)仿微信对话列表滑动删除效
  7. Ubuntuecplise中连接Android真机…
  8. Android(安卓)Jetpack -- navigation
  9. Android笔记:Android中的使用
  10. 使用 标签来重用layout代码