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

思路/步骤:

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

ArrayAdapter adapter = ArrayAdapter.createFromResource(

getApplicationContext(),

R.array.province,

android.R.layout.simple_spinner_item);

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

这段代码中有三个参数:

第一个参数Context是上下文,就是当前的Activity。

第二个参数是数据来源,R.array.province是存储在xml文件中的数据。

第三个参数是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);//绑定ID

spinner2 = (Spinner) findViewById(R.id.spinner2);//绑定ID

ArrayAdapter 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 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

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" >

android:id="@+id/province"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="省份:" />

android:id="@+id/spinner1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

android:id="@+id/city"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="城市:" />

android:id="@+id/spinner2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

item.xml

android:id="@+id/spinner_item"

android:layout_height="wrap_content"

android:layout_width="match_parent"

android:text="名称"

android:textColor="#000"

android:textSize="16dp"/>

实现效果如下:

总结

以上所述是小编给大家介绍的Android实现联动下拉框二级地市联动下拉框功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

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

  1. android加载富文本可点击链接,Android富文本解析器,支持网络图片,图片和链接点击事件...

    HtmlText image HtmlText 是 android.text.Html 的一个扩展,可以加载 HTML 并将其转换成 Spannable 显示在 TextView 上,支持网络图片,图 ...

  2. 关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片

    2019独角兽企业重金招聘Python工程师标准>>> 发现android 加载res图片如果过多也会崩溃 android 也是使用 Bitmap  bm = BitmapFacto ...

  3. js按钮触发网页提醒_jquery,js页面加载时自动点击触发jq按钮-Go语言中文社区

    jq加载时自动执行事件需要这样写 $(function(){ $('.signinpanel').hide();//加载时,隐藏一个元素 }) jq加载页面时自动点击按钮,则 按钮 function ...

  4. android加载刷新进度条,android – 在Activity加载时显示进度条

    我有一个ListActivity,它基于列表选择启动另一个Activity.第二个Activity需要从互联网上加载一些相当数据的数据,因此在用户点击一个项目和Activity显示之间有一个明显的延迟 ...

  5. android网络转圈,android基于dialog加载时转圈圈很好的demo

    [实例简介] 这是一个android基于dialog加载时转圈圈很好的完整demo,很适合新手学习,希望对有需要的朋友能得到帮助 [实例截图] [核心代码] dialog_anim └── dialo ...

  6. android web canvas,HTML5 - Canvas无法在Android WebView的第一次加载时渲染

    我正在开发基于HTML5画布的游戏,该游戏在现有应用程序的WebView中运行.在第一次运行游戏时,它会在后台成功加载,所有日志都表明它已准备就绪并正在运行.但是,WebView中不显示任何内容.如果 ...

  7. Android加载大图片不OutOfMemoryError

    Android加载图片时,对于分辨率小,配置低的机子,很容易发生OutOfMemoryError.手机的内存比图片的大很多,怎么会这样? 在设置Android虚拟机的内存时: RAM:模拟器的内存空间 ...

  8. android 加载layout,Android自定义View加载视图之LoadingLayout

    介绍 上一篇博文写了一个通用的加载view,这篇在加载view的基础在包裹一层就是LoadingLayout了,主要的目的是免去每次加载时要隐藏主内容布局,然后加载成功之后显示主内容布局这些繁琐操作. ...

  9. android加载大量图片内存优化,Android图片加载内存优化

    利用BitmapFactory.Options实现图片内存优化 通过设置options.inPreferredConfig控制内存占用 首先准备了一张1280x800的blue_bg.png图片,我们 ...

最新文章

  1. AutoCAD 命令参考手册
  2. ASP.NET中常用到的27个函数集
  3. CubieBoard开发板不用ttl线也不用hdmi线的安装方法
  4. HDU - 5008 Boring String Problem(后缀树求本质不同第k大子串)
  5. 《那些年啊,那些事——一个程序员的奋斗史》——35
  6. YBTOJ:字符串题(KMP)
  7. jdk8切换成jdk6_运行中的JDK语言功能预览:切换表达式
  8. vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题
  9. (MoMoCMS教程10)创建留言板
  10. NetSetMan Pro专业网络设置管理器
  11. 《SDN核心技术剖析和实战指南》
  12. Antd 修改 Table 悬浮颜色、表头背景色
  13. 一年级下册计算机教学计划,人教版一年级数学下册教学计划
  14. 关于AVCC与ADCC不一致的问题
  15. 3.7 矩阵最小二乘广义逆
  16. 第十三课功能键之开根号——C#计算器编程教学
  17. 中南大学自动化学院控制博士申请经验贴
  18. Fortran语言的入门与心得
  19. JATG篇(1)——FT2232H入门
  20. HTML+CSS+JS实现个人相册登录注册

热门文章

  1. php 现货 结算算法,PHP算法逻辑:如何计算购买量?
  2. python 中文查找_使用python和regex查找字符串中的所有中文文本
  3. mysql8.0.22 win7_现在还能不能下载到正版WIN 7
  4. apache安装_Ubuntu20.04安装Sql+apache+php
  5. Java注解Annotation的基本概念
  6. Android模仿京东登录注册,Android:布局实例之模仿京东登录界面
  7. 卸载 流程_「工具」Windows 卸载软件,这一个就够了
  8. git 无法拉取项目,本地ping不通github的解决办法(详解)
  9. docker实战百度云
  10. 劲爆!java的学习网站