省市级三级联动

前言:

在我们输入信息是经常会让我们输入户籍所在地,此时省市级三级联动就很有必要了

正文:

首先在xml文件中添加如下代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10
11
12     tools:context="com.example.aaaaa.sp.MainActivity">
13
14     <TextView
15         android:id="@+id/textview1"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:text="请选择您所在的城市"
19         android:textSize="20sp" />
20
21     <LinearLayout
22         android:layout_width="match_parent"
23         android:layout_height="wrap_content"
24         android:layout_marginTop="30dp"
25
26         >
27
28         <Spinner
29
30             android:id="@+id/provicespinner"
31             android:layout_width="match_parent"
32             android:layout_height="wrap_content"
33             android:layout_weight="1">
34
35         </Spinner>
36
37         <Spinner
38             android:id="@+id/cityspinner"
39             android:layout_width="match_parent"
40             android:layout_height="wrap_content"
41             android:layout_toRightOf="@id/provicespinner"
42             android:layout_weight="1">
43
44         </Spinner>
45
46         <Spinner
47             android:id="@+id/countyspinner"
48             android:layout_width="match_parent"
49             android:layout_height="wrap_content"
50             android:layout_toRightOf="@id/cityspinner"
51             android:layout_weight="1">
52
53         </Spinner>
54     </LinearLayout>
55
56     <TextView
57         android:id="@+id/textview"
58         android:layout_width="match_parent"
59         android:layout_height="wrap_content"
60         android:layout_alignParentLeft="true"
61         android:layout_alignParentStart="true"
62         android:layout_centerVertical="true"
63         android:gravity="center_horizontal"
64         android:text="显示城市"
65         android:textSize="20sp" />
66 </RelativeLayout>

Java代码如:

 1 import android.support.v7.app.AppCompatActivity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.AdapterView;
 5 import android.widget.ArrayAdapter;
 6 import android.widget.Spinner;
 7 import android.widget.TextView;
 8
 9 import java.util.ArrayList;
10 import java.util.List;
11
12 public class MainActivity extends AppCompatActivity {
13     private Spinner provicespinner;
14     private Spinner cityspinner;
15     private Spinner countyspinner;
16     private ArrayAdapter<String> priviceAdapter;
17     private ArrayAdapter cityAdapter;
18     private ArrayAdapter contyAdapter;
19     private int privicePosition;
20     private int cityPosition;
21     private int countyPosition;
22     private String[] provice = {"山西", "江苏", "安徽"};
23     private String[][] city = {{"太原", "大同", "阳泉"}, {"徐州", "南京", "苏州"}, {"宿州", "合肥", "淮北"}};
24     private String[][][] county = {{{"小店区", "迎泽区", "尖草坪区"}, {"阳高县", "天镇县", "浑源县"}, {"城区",
25             "郊区", "矿区"}}, {{"沛县", "丰县", "临空新城"}, {"玄武", "鼓楼", "下关"}, {"虎丘区", "吴中区",
26             "吴江区"}}, {{"砀山", "萧县", "涌泉区"}, {"肥东县", "肥西县", "长丰县"}, {"杜集区", "相山区", "烈山区"}}};
27     private TextView textView;
28
29     @Override
30     protected void onCreate(Bundle savedInstanceState) {
31         super.onCreate(savedInstanceState);
32         setContentView(R.layout.activity_main);
33         textView = (TextView) findViewById(R.id.textview);
34         provicespinner = (Spinner) findViewById(R.id.provicespinner);
35         cityspinner = (Spinner) findViewById(R.id.cityspinner);
36         countyspinner = (Spinner) findViewById(R.id.countyspinner);
37         //显示省
38         priviceAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, provice);
39         provicespinner.setAdapter(priviceAdapter);
40         //设置省级的监听器--目的是在你选择省后直接显示对应的市,最主要的是应用position
41         provicespinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
42             @Override
43             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
44                 cityAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, city[position]);
45                 cityspinner.setAdapter(cityAdapter);
46                 privicePosition = position;
47
48             }
49
50             @Override
51             public void onNothingSelected(AdapterView<?> parent) {
52
53             }
54         });
55         //给市spinner设置监听器
56         cityspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
57             @Override
58             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
59                 contyAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, county[privicePosition][position]);
60                 countyspinner.setAdapter(contyAdapter);
61                 //为能把此时的position传出去
62                 cityPosition = position;
63
64
65             }
66
67             @Override
68             public void onNothingSelected(AdapterView<?> parent) {
69
70             }
71         });
72         //为县设置适配器目的是为了显示你算选的省市县
73         countyspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
74             @Override
75             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
76                 //在下面所选内容显示
77                 textView.setText("选择的城市为" + " " + provice[privicePosition] + " " + city[privicePosition][cityPosition] + " " + county[privicePosition][cityPosition][position]);
78             }
79
80             @Override
81             public void onNothingSelected(AdapterView<?> parent) {
82
83             }
84         });
85     }
86 }

这样实现其实就是练练手,在实际的操作中可以说用到的东西复杂的多,上面注释解释的很详细就不一步步的解释,重要的就是运用spinner的监听器里面的参数position,从而提取出上面定义的几个数组中数据

原文地址:https://www.cnblogs.com/z-cg/p/12348535.html

时间: 2024-10-22 12:25:55

省市级三级联动的相关文章

用DropDownList实现的省市级三级联动

这是一个用DropDownList 实现的省市级三级联动,记录一下········ <asp:ScriptManager ID="ScriptManager1" runat="server">/asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server">                          <Cont

js实现省市级三级联动

之前做一个小项目时碰到了这个地域选择,三级联动的问题,找了很多源码,最后筛选出了我认为比较实用的代码,分享给大家. 首先,html文件应该有这样的select <select id="province" class="province"></select> <select id="city" class="city"></select> <select id="a

javaWeb数据库动态加载全国省市区三级联动

首先声明一下,全国省市区三级联动有很多的插件.没有必要这么麻烦的把省市区存到数据库,然后再获取.这样缺点很明显: 缺点:使用数据库,每次动态ajax获取数据都要操作一次数据库,增加了数据库的负担.不推荐这样做,直接使用插件比较好. 一些Jquery插件比较省时省力,不用来回操作数据库,就能达到你想要的效果,页面修饰就要自己设计咯.而且使用数据库你还要事先把省市区数据存到数据库,耗费精力,及时有一些现成的sql文件可以导入.但是感觉好麻烦有没有,博主算是试了一次. 好了说了很多废话,开始上代码吧:

vue.js实现省市区三级联动

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>vue实现省市级三级联动</title> <script src="vue.min.js"></script> </head><body> <div id="my"&g

ajax简介以及用ajax做的三级联动小练习

ajax基本结构: 1 var name = $("#text_1").val(); 2 $.ajax({ 3 url: "Ashxs/Handler.ashx",//一般处理程序路径 4 data: { "name": name },//要传输的数据,冒号前面是键名后面是要传输的数据,如果有多条数据在大括号内用逗号拼接 5 type: "post",//传输方式 6 dataType: "json",//

Hibernate+struts+JqueryAjax+jSON实现无刷新三级联动

看网上JqueryAjax三级联动的例子讲不是很全,代码也给的不是很全,给初学者带来一定的难度.小弟自己写了一个,可能有些地方不是很好,希望大家能够提出建议. 用的是Hibernate+struts2写的.http://blog.csdn.net/luckey_zh/article/details/22995389 以代码来说话吧. 首先是index1.jsp页面 [html] view plaincopy <%@ page language="java" import=&quo

层的三级联动

/部门下拉选单绑定数据        function CreateDeptEntity(dataList) {            var select = "#setdept";            jQuery(select).empty();            jQuery(select).append("<OPTION value=0>请选择</OPTION>");            if (dataList != nu

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html><html>    <head>        <meta c

省市三级联动

mumuy-widget-91839b8 http://jquerywidget.com/ /** * jquery.citys.js 1.0 * http://jquerywidget.com */ ;(function (factory) { if (typeof define === "function" && (define.amd || define.cmd) && !jQuery) { // AMD或CMD define([ "jq