android完整开发省市县三级联选

时间: 2023-10-04 11:08:42 浏览: 46
实现省市县三级联动的方法有很多种,以下是一种常用的实现方式: 1. 创建三个Spinner控件,分别用来显示省、市、县的名称。 2. 创建三个List集合,分别用来存储省、市、县的数据。 3. 在Activity的onCreate()方法中,初始化省级数据,将其加载到省级List集合中。同时设置省级Spinner的适配器,并设置选择监听器。 4. 当省级Spinner的选择项发生改变时,根据所选省份的名称加载该省份的市级数据,并将其加载到市级List集合中。同时设置市级Spinner的适配器,并设置选择监听器。 5. 当市级Spinner的选择项发生改变时,根据所选城市的名称加载该城市的县级数据,并将其加载到县级List集合中。同时设置县级Spinner的适配器,并设置选择监听器。 6. 最后,在选择县级Spinner的最后一项后,即可得到完整的省市县三级联动数据。 具体实现可以参考以下代码: ``` public class MainActivity extends AppCompatActivity { private Spinner mProvinceSpinner; private Spinner mCitySpinner; private Spinner mCountySpinner; private List<String> mProvinceList = new ArrayList<>(); private List<String> mCityList = new ArrayList<>(); private List<String> mCountyList = new ArrayList<>(); private ArrayAdapter<String> mProvinceAdapter; private ArrayAdapter<String> mCityAdapter; private ArrayAdapter<String> mCountyAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mProvinceSpinner = findViewById(R.id.province_spinner); mCitySpinner = findViewById(R.id.city_spinner); mCountySpinner = findViewById(R.id.county_spinner); // 初始化省级数据 initProvinceData(); // 设置省级Spinner的适配器和选择监听器 mProvinceAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mProvinceList); mProvinceSpinner.setAdapter(mProvinceAdapter); mProvinceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // 根据所选省份的名称加载该省份的市级数据 String provinceName = mProvinceList.get(position); initCityData(provinceName); // 设置市级Spinner的适配器和选择监听器 mCityAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, mCityList); mCitySpinner.setAdapter(mCityAdapter); mCitySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // 根据所选城市的名称加载该城市的县级数据 String cityName = mCityList.get(position); initCountyData(cityName); // 设置县级Spinner的适配器 mCountyAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, mCountyList); mCountySpinner.setAdapter(mCountyAdapter); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } // 初始化省级数据 private void initProvinceData() { mProvinceList.add("北京市"); mProvinceList.add("天津市"); mProvinceList.add("河北省"); mProvinceList.add("山西省"); mProvinceList.add("内蒙古自治区"); } // 根据省份名称初始化市级数据 private void initCityData(String provinceName) { mCityList.clear(); if ("北京市".equals(provinceName)) { mCityList.add("北京市"); } else if ("天津市".equals(provinceName)) { mCityList.add("天津市"); } else if ("河北省".equals(provinceName)) { mCityList.add("石家庄市"); mCityList.add("唐山市"); mCityList.add("秦皇岛市"); } else if ("山西省".equals(provinceName)) { mCityList.add("太原市"); mCityList.add("大同市"); mCityList.add("阳泉市"); } else if ("内蒙古自治区".equals(provinceName)) { mCityList.add("呼和浩特市"); mCityList.add("包头市"); mCityList.add("赤峰市"); } } // 根据城市名称初始化县级数据 private void initCountyData(String cityName) { mCountyList.clear(); if ("石家庄市".equals(cityName)) { mCountyList.add("长安区"); mCountyList.add("桥西区"); } else if ("唐山市".equals(cityName)) { mCountyList.add("路北区"); mCountyList.add("路南区"); } else if ("秦皇岛市".equals(cityName)) { mCountyList.add("海港区"); mCountyList.add("山海关区"); } else if ("太原市".equals(cityName)) { mCountyList.add("小店区"); mCountyList.add("迎泽区"); } else if ("大同市".equals(cityName)) { mCountyList.add("城区"); mCountyList.add("矿区"); } else if ("阳泉市".equals(cityName)) { mCountyList.add("城区"); mCountyList.add("矿区"); } else if ("呼和浩特市".equals(cityName)) { mCountyList.add("新城区"); mCountyList.add("回民区"); } else if ("包头市".equals(cityName)) { mCountyList.add("东河区"); mCountyList.add("昆都仑区"); } else if ("赤峰市".equals(cityName)) { mCountyList.add("红山区"); mCountyList.add("元宝山区"); } } } ```

相关推荐

最新推荐

recommend-type

Android 音乐播放器的开发实例详解

本文主要讲解Android 音乐播放器的开发,这里给大家提供一个简单的示例代码,和实现效果图,有需要开发音乐播放器的朋友可以参考下
recommend-type

android开发计算器设计开发报告.doc

Android简单应用程序开发,简单计算器。 2程序说明: 1、计算器界面友好,方便使用。 2、具有基本的加、减、乘、除功能。 3、能够判断用户输入运算数是否正确。 4、支持小数运算。 5、具有清除功能,删除所有,c。
recommend-type

Android开发实现根据包名判断App运行状态的方法

本文实例讲述了Android开发实现根据包名判断App运行状态的方法。分享给大家供大家参考,具体如下: 前面讲过Android开发判断一个app应用是否在运行的方法,这里实现获取指定包名的 APP 是否还在后台运行,判断 APP ...
recommend-type

Android实现弹出列表、单选、多选框

主要为大家详细介绍了Android实现弹出列表、单选、多选框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Android开发使用PopupMenu创建弹出式菜单完整实例

主要介绍了Android开发使用PopupMenu创建弹出式菜单,结合完整实例形式分析了Android基于PopupMenu对象创建的弹出式菜单相关操作技巧与注意事项,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。