(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. moviepy音视频剪辑:使用fl_time报错OSError: MoviePy error: failed to read the first frame of video file

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在m ...

  2. PyQt学习随笔:QTableWidgetItem项的setSizeHint()方法的作用

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidgetItem项的方法setSizeHint用于设置项的sizeHint属性,Qt ...

  3. 第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码

    Python要访问一个网页并读取网页内容非常简单,在利用<第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头>的方法构建了请求http报文的请求头情况下,使 ...

  4. kaggle——Bag of Words Meets Bags of Popcorn(IMDB电影评论情感分类实践)

    kaggle链接:https://www.kaggle.com/c/word2vec-nlp-tutorial/overview 简介:给出 50,000 IMDB movie reviews,进行0 ...

  5. 揭秘 VMAF 视频质量评测标准

    作者:杨洋,阿里云技术专家,从事直播相关媒体处理引擎开发 背景 图像质量的衡量是个老问题,对此人们提出过很多简单可行的解决方案.例如均方误差(Mean-squared-error,MSE).峰值信噪比 ...

  6. js 二分查找

    二分查找也叫对折查找,对于一个从小到大的有序数组,想要在数组中找到某个值,依次对折查找,小于就在从左边开始,大于就从右边开始,再判断对折后当前的那个索引的值和需要查找的值对比,如果小则high-1,小 ...

  7. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  8. jenkins配置--上传代码,定时执行用例,发送测试报告

    1.安装条件:jdk1.8以上的,百度jenkin进入官网--download ,根据需要的版本下载 2.jenkins概念:持续集成,jenkins开源属于插件式形式进行管理的,选择性的装插件,支持 ...

  9. go并发之goroutine和channel,并发控制入门篇

    并发的概念及其重要性 这段是简单科普,大佬可以跳过 并发:并发程序指同时进行多个任务的程序.在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行 ...

  10. mysql-zerofill关键字

    zerofill位数填充 mysql> create table shop( -> article int(4) unsigned zerofill default '0000' not ...