(1)首先在res文件夹下面的values中创建一个省市arrays.xml文件夹,如下

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="province">
    <item>-省份-</item>
<item>河北省</item>
<item>山西省</item>  
<item>北京市</item>
</string-array>
<string-array name="hb">
    <item>-城市-</item>
<item>承德市</item>
<item>邯郸市</item>  
<item>廊坊市</item>
</string-array>
<string-array name="bj">
     <item>-城市-</item>
<item>海淀区</item>
<item>朝阳区</item>  
<item>崇文区</item>
</string-array>
<string-array name="shx">
   <item>-城市-</item>
<item>大同市</item>
<item>临汾市</item>
</string-array>
</resources>

(2)然后再布局文件中添加两个spinner控件,xml布局代码如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
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="com.example.spinner.MainActivity" > <Spinner
android:id="@+id/spPro"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Spinner
android:id="@+id/spcity"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>

(3)到这里资源和布局界面已经搭好,接下来就是在MainActivity中用代码来控制省市的联动,详解在代码的注释中,代码如下

public class MainActivity extends Activity {
private Spinner spPro, spCity; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spPro = (Spinner) findViewById(R.id.spPro);
spCity = (Spinner) findViewById(R.id.spcity); // 设置数据源
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.province,
android.R.layout.simple_spinner_item);
// 设置下拉列表的风格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 绑定数据源到spinner控件上
spPro.setAdapter(adapter); //spinner选项选择事件
spPro.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//此处的parent是指的spPro的下拉框
Spinner spinner = (Spinner) parent;
//通过getItemAtPosition(position)的方法来找到省项的名称
String pro = (String) spinner.getItemAtPosition(position);
//设置市级的数据适配器
ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.bj,
android.R.layout.simple_spinner_item);
//判断,然后设置适配器
if (pro.equals("河北省")) {
cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.hb,
android.R.layout.simple_spinner_item);
} else if (pro.equals("北京市")) {
cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.bj,
android.R.layout.simple_spinner_item);
} else if (pro.equals("山西省")) {
cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.shx,
android.R.layout.simple_spinner_item);
}
spCity.setAdapter(cityAdapter);
} @Override
public void onNothingSelected(AdapterView<?> parent) { }
}); } }

  最后运行的效果就是如下图所示

Android——spinner控件实现读取xml资源,省、市两级互动的更多相关文章

  1. Android spinner控件

    spinner控件是Android中下拉控件,现在介绍它两种用法.第一种,从资源文件中获取下拉值:第二种,从代码中获取下拉值. 第一种,首先要在资源文件中把值写好: <?xml version= ...

  2. android Spinner控件详解

    Spinner提供了从一个数据集合中快速选择一项值的办法.默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner ...

  3. Android Spinner控件数据绑定

    Java代码

  4. Android基本控件Spinner的简单使用【转】

    Android基本控件Spinner的简单使用 感谢大佬:https://blog.csdn.net/bingocoder/article/details/80469939 学习过了Textview, ...

  5. android 学习 Spinner控件的使用

    今晚看了下spinner控件的使用,结合博客大神的教程,一个小demo 一,SpinnerActivity private Spinner spinner; private ArrayAdapter& ...

  6. 大约Android PopupWindow有用Spinner控件点击APP Crash案例整理!

    场景异常,如下面: android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.V ...

  7. ProgressBar、RatingBar和Spinner控件

    1.ProgressBar.SeekBar与RatingBar控件 ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等.SeekBar控件,滑块控件,可以根据用户的需要动态为 ...

  8. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  9. Spinner控件

    首先在XML文件中声明一个Spinner控件: <Spinner android:id="@+id/spinnerId" android:layout_width=" ...

随机推荐

  1. JavaWeb知识梳理

    目录 JavaWeb Web服务器 技术讲解 Web服务器 Tomcat Http Maven pom.xml Servlet HelloServlet Servlet原理 Mapping Servl ...

  2. PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中当前列currentColumn和选中项selectedItems访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前列访问方法 树型部件QTreeWidget的currentColumn()方法返回当前项中得到焦 ...

  3. hitorMiss、hitAndMiss以及MORPH_HITMISS?

    hitorMiss.hitAndMiss在图像处理中都是同一个概念,即图像的形态学变换中的击中击不中变换,hit表示击中,miss表示击不中.MORPH_HITMISS是OpenCV调用时该变换的op ...

  4. 记账本APP小升级

    增加了显示当月总收入和总支出的功能,增加了选择收支类型的功能,删去了删除账目后恢复的功能. 1.数据库的升级 1.entity 添加了一个收支类型的字段: package com.example.ca ...

  5. Hbase的基本原理(与HIVE的区别、数据结构模型、拓扑结构、水平分区原理、场景)

    重点:HBase的基本数据模型.拓扑结构.部署配置方法,并介绍通过命令行和编程方式使用HBase的基本方法. HBase:一种列存储模式与键值对相结合的NoSQL软件,但更多的是使用列存储模式,底层的 ...

  6. espcms代码审计(二次urldecode注入分析)

    这里提到的漏洞是二次urldecode注入 这里用到的还是espcms,不过版本应该跟之前的有所不同,在网上找到的espcms源代码都是已经修补了这个漏洞的,我们对比分析吧 先放上漏洞位置代码,也就是 ...

  7. c++11-17 模板核心知识(十五)—— 解析模板之依赖型类型名称与typename Dependent Names of Types

    模板名称的问题及解决 typename规则 C++20 typename 上篇文章c++11-17 模板核心知识(十四)-- 解析模板之依赖型模板名称 Dependent Names of Templ ...

  8. Scrum 冲刺第二天

    一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:制定测试计划.博客编写 今日工作计划:测试mappe里的接口 工作中遇到的困难:对测试接触得较少 张润柏: 昨天已完 ...

  9. CSS全览_选择符+特指+单位+字体

    CSS全览_选择符+特指+单位+字体 目录 CSS全览_选择符+特指+单位+字体 1. CSS样式 2. 选择符 3. 特指度和层叠 4. 值和单位 5. 字体 作者: https://www.cnb ...

  10. Unity发布WebGL改变鼠标样式

    记录:前段时间遇到一个需求,就是打包出来要在某种情况下鼠标的样子要改变成想要的样式. 详细代码如下 public Texture2D[] hand;//小指图标 /// <summary> ...