Android练习——Spinner二级联动_城市选择

news/2025/2/24 17:06:24

样式部分xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <TextView
12         android:id="@+id/textView1"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="请选择城市" />
16 
17     <Spinner
18         android:id="@+id/spinner1"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_alignLeft="@+id/textView1"
22         android:layout_below="@+id/textView1" />
23 
24     <Spinner
25         android:id="@+id/spinner2"
26         android:layout_width="wrap_content"
27         android:layout_height="wrap_content"
28         android:layout_alignLeft="@+id/spinner1"
29         android:layout_below="@+id/spinner1" />
30 
31 </RelativeLayout>

arrays部分xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3    <string-array name="province">
 4         <item>-省份-</item>
 5         <item>北京市</item>
 6         <item>河北省</item>
 7     </string-array>
 8     <string-array name="hb">
 9         <item>-城市-</item>
10         <item>承德市</item>
11         <item>石家庄</item>
12         <item>邯郸市</item>
13         <item>邢台市</item>
14         <item>廊坊市</item>
15     </string-array>
16     <string-array name="bj">
17         <item>-城市-</item>
18         <item>海淀区</item>
19         <item>朝阳区</item>
20         <item>崇文区</item>
21         <item>昌平区</item>
22     </string-array>
23 </resources>            

Activity 部分

 1 package com.example.android_spinner;
 2 
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.view.Menu;
 6 import android.view.View;
 7 import android.widget.AdapterView;
 8 import android.widget.ArrayAdapter;
 9 import android.widget.Spinner;
10 
11 public class MainActivity extends Activity {
12     // 声明组件
13     private Spinner sr1;
14     private Spinner sr2;
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20         // 获取组件
21         sr1 = (Spinner) this.findViewById(R.id.spinner1);
22         sr2 = (Spinner) this.findViewById(R.id.spinner2);
23         // 添加String数组
24         String[] province = getResources().getStringArray(R.array.province);
25         ;
26         // 将数组配置器链接上预置的文件
27         // ArrayAdapter<CharSequence> aa = new ArrayAdapter<CharSequence>(this,
28         // android.R.layout.simple_spinner_item,province);
29 
30         // 这样就可以直接获取xml中的数组了
31         ArrayAdapter<CharSequence> aa = ArrayAdapter.createFromResource(this,
32                 R.array.province, android.R.layout.simple_spinner_item);
33 
34         // 设置下拉菜单的样式
35         aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
36         // 将数据绑定到spinner上
37         sr1.setAdapter(aa);
38 
39         // 添加监听事件
40 
41         sr1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
42 
43             @Override
44             public void onItemSelected(AdapterView<?> arg0, View arg1,
45                     int arg2, long arg3) {
46                 // 得到事件中选中的值
47                 Spinner s = (Spinner) arg0;
48                 String pro = (String) s.getItemAtPosition(arg2);
49                 ArrayAdapter<CharSequence> cityAdapter = null;
50                 // 获取所在省含有哪些市(从资源数组文件中获取数据)
51                 if (pro.equals("河北省")) {
52 
53                     cityAdapter = ArrayAdapter.createFromResource(
54                             MainActivity.this, R.array.hb,
55                             android.R.layout.simple_spinner_item);
56                 } else if (pro.equals("北京市")) {
57 
58                     cityAdapter = ArrayAdapter.createFromResource(
59                             MainActivity.this, R.array.bj,
60                             android.R.layout.simple_spinner_item);
61                 } 
62                 sr2.setAdapter(cityAdapter);
63             }
64 
65             @Override
66             public void onNothingSelected(AdapterView<?> arg0) {
67                 // TODO Auto-generated method stub
68 
69             }
70 
71         });
72 
73     }
74 
75     @Override
76     public boolean onCreateOptionsMenu(Menu menu) {
77         // Inflate the menu; this adds items to the action bar if it is present.
78         getMenuInflater().inflate(R.menu.main, menu);
79         return true;
80     }
81 
82 }

实现效果:

转载于:https://www.cnblogs.com/zzsakurazz/p/4044427.html


http://www.niftyadmin.cn/n/711674.html

相关文章

01_MUI之Boilerplate中:HTML5演示样例,动态组件,自己定义字体演示样例,自己定义字体演示样例,图标字体演示样例...

&#xfeff;&#xfeff;1安装HBuilder5.0.0,安装后的界面截图例如以下&#xff1a;2 依照https://www.muicss.com/docs/v1/css-js/boilerplate-html中的说明&#xff0c;创建上图的Boilerplate.html&#xff1a;3 代码内容例如以下&#xff1a;<!--作者&#xff1a;XXXqq.…

matlab功能块的作用,为什么功能块、功能要被拖入组织块才有效?

回答者&#xff1a;henry.wang - 高级工程师&nbsp&nbsp第11级 2018-12-21 21:40:09需要调用才能起作用啊回答者&#xff1a;紫方 - 资深顾问&nbsp&nbsp第13级 2018-12-21 22:58:06从表象上看似乎不一定&#xff0c;功能块也可以调用功能块及功能&#xff0c;但…

第九周项目6-穷举法之百钱百鸡

鸡翁一值钱五&#xff0c;鸡母 一值钱三&#xff0c;鸡雏三值钱一。百钱买百鸡&#xff0c;问鸡翁、鸡母、鸡雏各几何? 构建代码&#xff1a; /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称&#xff1a;temp.cpp*作者&#xff1a;邵帅*完成时间&…

关于Mysql DATE_FORMAT() 日期格式

定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。 语法 DATE_FORMAT(date,format) date 参数是合法的日期。format 规定日期/时间的输出格式。 格式描述%a缩写星期名%b缩写月名%c月&#xff0c;数值%D带有英文前缀的月中的天%d月的天&#xff0c;数值(00-31)…

SpringBoot——SpringBoot打war包并部署到Tomcat

1.详细步骤 首先在pom.xml文件中做一些修改&#xff1a; 修改打包方式为 war指定最终打成war包的名称手动指定 resources 文件夹编译打包的路径添加SpringBoot内嵌Tomcat解析jsp的依赖&#xff08;仅仅是为这个实例而添加&#xff09;<?xml version"1.0" encodin…

根据umask计算出系统默认的权限规则

对于目录 777直接减去umask对于文件 666减去umask的值&#xff0c;如果umask某一位上面是奇数&#xff0c;减完umask之后奇数位需要1 [rootoldboyedu-01 ~]# #根据umask计算文件的默认权限[rootoldboyedu-01 ~]# #666[rootoldboyedu-01 ~]# #-022[rootoldboyedu-01 ~]# #644[ro…

leetcode笔记:Validate Binary Search Tree

一. 题目描写叙述 Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node’s key. The right subtree of a node contains only nod…

php中的¥row,PHP PDO函数库详解

PDO是一个“数据库接见抽象层”&#xff0c;感化是同一各类数据库的接见接口&#xff0c;与mysql和mysqli的函数库比拟&#xff0c;PDO让跨数据库的应用更具有亲和力&#xff1b;与ADODB和MDB2比拟&#xff0c;PDO更高效。今朝而言&#xff0c;实现“数据库抽象层”任重而道远&…