Android实现联动下拉框,二级地市联动下拉框

日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手。

思路/步骤:

在实现联动下拉框之前,我们先对用到的ArrayAdapter和数据的封装作必要的了解,Android 中提供了很多适配器的实现类,其中ArrayAdapter就其中之一。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入。如:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.province,android.R.layout.simple_spinner_item);

ArrayAdapter中比较常用的泛型是String,但此处用了CharSequence(字符序列),通过指定泛型来装配适合的数据类型。
这段代码中有三个参数:

  1. 第一个参数Context是上下文,就是当前的Activity。
  2. 第二个参数是数据来源,R.array.province是存储在xml文件中的数据。
  3. 第三个参数是Android SDK中内置的一个TextView。(此xml文件中只有一个TextView)。
  • 通过创建一个ArrayAdapter处理存储在xml中的省份地市数据,用Spinner控件处理ArrayAdapter处理好的数据,用TextView将数据显示出来形成一个list供用户点击选择。
主要实现代码: MainActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;public class MainActivity extends Activity {Spinner spinner1, spinner2;//声明两个下拉框String City, Province;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);spinner1 = (Spinner) findViewById(R.id.spinner1);//绑定IDspinner2 = (Spinner) findViewById(R.id.spinner2);//绑定IDArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.province,android.R.layout.simple_spinner_item);//创建资源spinner1.setAdapter(adapter);//装配数据spinner1.setOnItemSelectedListener(new provinceClickListen());//监听事件spinner2.setOnItemSelectedListener(new CityClickListen());//监听事件}
class provinceClickListen implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> parent, View v, int i, long l) {Spinner spinner = (Spinner) parent;String pro = (String) spinner.getItemAtPosition(i);//获取当前选中项ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.def,R.layout.item);//初始化Province = spinner1.getSelectedItem().toString();//当前选中的省份/** 根据省份,装配地市数据**/if (pro.equals("北京")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.北京, R.layout.item);} else if (pro.equals("天津")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.天津, R.layout.item);} else if (pro.equals("河北")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.河北, R.layout.item);} else if (pro.equals("山西")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.山西, R.layout.item);} else if (pro.equals("内蒙古")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.内蒙古, R.layout.item);} else if (pro.equals("辽宁")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.辽宁, R.layout.item);} else if (pro.equals("吉林")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.吉林, R.layout.item);} else if (pro.equals("黑龙江")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.黑龙江, R.layout.item);} else if (pro.equals("上海")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.上海, R.layout.item);} else if (pro.equals("江苏")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.江苏, R.layout.item);} else if (pro.equals("浙江")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.浙江, R.layout.item);} else if (pro.equals("安徽")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.安徽, R.layout.item);} else if (pro.equals("福建")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.福建, R.layout.item);} else if (pro.equals("江西")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.江西, R.layout.item);} else if (pro.equals("山东")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.山东, R.layout.item);} else if (pro.equals("河南")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.河南, R.layout.item);} else if (pro.equals("湖北")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.湖北, R.layout.item);} else if (pro.equals("湖南")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.湖南, R.layout.item);} else if (pro.equals("广东")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.广东, R.layout.item);} else if (pro.equals("广西")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.广西, R.layout.item);} else if (pro.equals("海南")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.海南, R.layout.item);} else if (pro.equals("重庆")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.重庆, R.layout.item);} else if (pro.equals("四川")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.四川, R.layout.item);} else if (pro.equals("贵州")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.贵州, R.layout.item);} else if (pro.equals("云南")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.云南, R.layout.item);} else if (pro.equals("西藏")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.西藏, R.layout.item);} else if (pro.equals("陕西")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.陕西, R.layout.item);} else if (pro.equals("甘肃")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.甘肃, R.layout.item);} else if (pro.equals("青海")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.青海, R.layout.item);} else if (pro.equals("宁夏")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.宁夏, R.layout.item);} else if (pro.equals("新疆")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.新疆, R.layout.item);} else if (pro.equals("台湾")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.台湾, R.layout.item);} else if (pro.equals("香港")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.香港, R.layout.item);} else if (pro.equals("澳门")) {adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.澳门, R.layout.item);}spinner2.setAdapter(adapter);//装配地市数据}public void onNothingSelected(AdapterView<?> parent) {}}class CityClickListen implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> parent, View v, int i, long l) {City = spinner2.getSelectedItem().toString();//当前选中的地市if (City.equals("-城市-")) {//当前还没选择地市} else {Toast.makeText(getApplicationContext(), Province+"省"+City, Toast.LENGTH_LONG).show();//Toast显示选中的省份城市}}public void onNothingSelected(AdapterView<?> parent) {}}public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}
}
此外还有布局文件: activity_main.xml
<LinearLayout xmlns: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:orientation="horizontal"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:id="@+id/province"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="省份:" /><Spinnerandroid:id="@+id/spinner1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1" /><TextViewandroid:id="@+id/city"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="城市:" /><Spinnerandroid:id="@+id/spinner2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1" />
</LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?><TextView  xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/spinner_item"android:layout_height="wrap_content"android:layout_width="match_parent"android:text="名称"android:textColor="#000"android:textSize="16dp"/>

实现效果如下:






本文章参看作者:预言家,做学习交流所用,如有侵权,请及时反馈,感谢!

Android实现联动下拉框相关推荐

  1. android加载时二级联动点击二级联动,Android实现联动下拉框二级地市联动下拉框功能...

    日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手. 思路/步骤 ...

  2. Android 多级联动下拉框

    /** * 获取大类别下拉框数据,并添加到下拉框 / private void get_b_type(){ String sql = "SELECT b_type FROM machine_ ...

  3. Ajax实现无刷新三联动下拉框

    1.html代码 <HTML>     <HEAD>         <title>Ajax实现无刷新三联动下拉框</title>         &l ...

  4. 一个大数据量表访问优化--联动下拉框查询优化

    问题描述有一数据表(产品标签表,每个产品一个唯一的SN,每月100万左右),查询界面上有2个联动下拉框,[规格]____,[批次]______ 用户选择一个规格后(目前200来个规格),列出该规格下达 ...

  5. 联动下拉框显示省市县

    首先,这次用到的知识点有三层的逻辑还有连接数据库知识以及传参知识点,废话不多说,首先展示页面: 首先第一本机的数据库,连接字符创写在app.cofing里,这个不用多说了: <configura ...

  6. 2018最新版省市区三级联动下拉框+所有源代码以及数据库

    2018年国家统计局最新数据,JSP+Servlet+Dao实现省市区三级联动下拉框的效果 DropdownDAO.java -–Dao层 package com;import java.sql.Co ...

  7. Android第三方开源下拉框:NiceSpinner

     Android第三方开源下拉框:NiceSpinner Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Andro ...

  8. javascript实现下拉条联动_js实现多级联动下拉框

    花了半天时间实现一个多级联动下拉框,目的是对某一植物进行"门纲目科属"的归类.使用的技术是javascript+xml,之所以不用数据库,一来这方面的数据虽然量大但都是固定不变的, ...

  9. Excel制作导入模板,多级联动下拉框(一整列的设置),修改一级下拉框内容,自动清空二级内容

    目录 效果展示 一.数据准备 二.模板制作 原因1:为空 原因二:名称管理器数据有误 三.修改一级下拉框内容,自动清空二级内容 1,效果演示 2,实际操作 效果展示 一.数据准备 1,新建一张表,在s ...

最新文章

  1. 【机器学习】基于自适应变异粒子群算法的非线性函数寻优
  2. Dynamics 365 for CRM: Sitemap站点图的可视化编辑功能
  3. java封装,继承和多态
  4. html:(35):缩进和行高
  5. 前端web 技术盘点
  6. Apache Shiro官方构架文档中文翻译
  7. 项目管理(软件开发)之甘特图使用
  8. Python dict字典keys()、values()和items()方法
  9. 《MATLAB 神经网络43个案例分析》:第37章 基于灰色神经网络的预测算法研究——订单需求预测
  10. 使用scrapy框架爬取腾讯招聘信息
  11. Windows7安装mysql-压缩包方式
  12. 利用OPENCV创作梵高艺术风格图片
  13. WIFI无线传输,图传。视频提节
  14. 3D视觉学习计划之PCL库的基础知识
  15. ははうえさま/亲爱的妈妈
  16. C语言补漏:字符串指针与字符数组传参
  17. KEGG_cnetplot绘制基因—通路图(展示想要的通路)——R
  18. 英伟达终于开源GPU内核模块代码
  19. 政法大学研究员:珊瑚版QQ作者不值得同情
  20. 如何彻底关闭 Hyper-V 服务

热门文章

  1. 【干货】使用EnCase来分析windows 7文件系统------认识元数据记录$MFT,数据恢复
  2. 没有下列需求,建议不要购买云计算
  3. Web渗透工程师零基础就业班【从入门到就业】
  4. neo4j入门开发,以及在sns关系中的应用
  5. 微信小程序外部字体的导入
  6. 微信、QQ发消息功能测试用例
  7. Cadence OrCAD Capture TCL/TK脚本——DboGlobal
  8. 财物机器人英文ppt演讲课件_机器人总动员英文ppt
  9. 开元弧焊机器人编程_弧焊机器人操作和编程.ppt
  10. 申请宣告专利权无效的主体有哪些 ?