前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android实现省市区三级联动

Android实现省市区三级联动

作者头像
砸漏
发布2020-11-05 11:16:22
2.6K0
发布2020-11-05 11:16:22
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

针对AdapterView的拓展使用,Spinner实现省市区的三级联动,具体内容如下

其主要是通过使用Spinner的setOnItemSelectListener来实现。

代码示例:

activity_main.xml

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.example.testspinnerprovince.MainActivity"
  android:orientation="vertical" 

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:text="@string/selection"
    android:padding="6dp"/ 
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:orientation="horizontal" 

    <Spinner
      android:id="@+id/provinceSpinner"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"/ 
    <Spinner
      android:id="@+id/citySpinner"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"/ 
    <Spinner
      android:id="@+id/countySpinner"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"/ 

  </LinearLayout 
  <TextView
    android:id="@+id/show"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:padding="6dp"
    android:layout_marginTop="80dp"
    android:text="@string/selected"/ 

</LinearLayout 

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
private TextView show;
private Spinner provinceSpinner;//省级
private Spinner citySpinner;//市级
private Spinner countySpinner;//区级
private String[] province = new String[]{"北京","上海","天津","广东"};
private String[][] city = new String[][]{
{"东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","门头沟区",
"房山区","通州区","顺义区","大兴区","昌平区","平谷区","怀柔区","密云县","延庆县"},
{"长宁区","静安区","普陀区","闸北区","虹口区"},
{"和平区","河东区","河西区","南开区","河北区","红桥区","塘沽区","汉沽区","大港区","东丽区"},
{"广州","深圳","韶关"}};
private String[][][] county = new String[][][]{{
//北京
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},},{
//上海
{"无"},{"无"},{"无"},{"无"},{"无"},},{
//天津
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},},{
//广东
{"海珠区","荔湾区","越秀区","白云区","萝岗区","天河区","黄浦区","花都区","从化市","增城市"
,"番禺区","南沙区"},
{"宝安区","福田区","龙岗区","罗湖区","南山区","盐田区"},
{"武江区","浈江区","曲江区","乐昌市","南雄市","始兴县","仁化县","翁源县","新丰县","乳源县"}
}
};
//Spinner想要填充肯定需要适配器
private ArrayAdapter<String  provinceAdapter;
private ArrayAdapter<String  cityAdapter;
private ArrayAdapter<String  countyAdapter;
private int provicePosition;//省级选中索引
private int cityPosition;//市级选中索引
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();//初始化
}
//控件初始化
private void initViews() {
provinceSpinner = (Spinner) findViewById(R.id.provinceSpinner);
citySpinner = (Spinner) findViewById(R.id.citySpinner);
countySpinner = (Spinner) findViewById(R.id.countySpinner);
show = (TextView) findViewById(R.id.show);
//初始化适配器及显示的内容
provinceAdapter = new ArrayAdapter<String (this,android.R.layout.simple_spinner_item,province);
provinceSpinner.setAdapter(provinceAdapter);
//对省级下拉实现监听,市级下拉需要根据不同的省级显示不同内容。
provinceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?  parent, View view, int position, long id) {
//需要在item选中省级的时候,动态的改变市级对应的显示
cityAdapter = new ArrayAdapter<String (MainActivity.this,android.R.layout.simple_spinner_item,city[position]);
//设置二级下拉列表当中选项内容适配器
citySpinner.setAdapter(cityAdapter);
//记录当前的省级索引位置,留给下面修改县级进行适配使用
provicePosition = position;
}
@Override
public void onNothingSelected(AdapterView<?  parent) {
}
});
//市级下拉监听
citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?  parent, View view, int position, long id) {
//需要在item选中市级的时候,动态的改变县级对应的显示
countyAdapter = new ArrayAdapter<String (MainActivity.this,android.R.layout.simple_spinner_item,county[provicePosition][position]);//首先确定是哪个省的。
//设置二级下拉列表当中选项内容适配器
countySpinner.setAdapter(countyAdapter);
show.setText("选中的城市为:"+ province[provicePosition] + city[provicePosition][position]);
cityPosition = position;
}
@Override
public void onNothingSelected(AdapterView<?  parent) {
}
});
//区级的下拉
countySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?  parent, View view, int position, long id) {
show.setText("选中的城市为:"+ province[provicePosition] + city[provicePosition][cityPosition]
+ county[provicePosition][cityPosition][position]);
}
@Override
public void onNothingSelected(AdapterView<?  parent) {
}
});
}
}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档