多个Spinner联动,就像省市的选择,选择了省,这个省的所有市就会显示在下面的spinner里

上代码

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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">

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="省份:"
            android:textSize="32sp" />

        <Spinner
            android:id="@+id/province"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"></Spinner>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/ll"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="市    :"
            android:textSize="32sp" />

        <Spinner
            android:id="@+id/country"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"></Spinner>
    </LinearLayout>

</RelativeLayout>

Spinner的布局:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3               android:layout_width="match_parent"
 4               android:layout_height="match_parent"
 5               android:orientation="vertical">
 6 
 7     <TextView
 8         android:id="@+id/spinner_tv"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:background="#099"
12         android:padding="8dp"
13         android:textColor="#222"
14         android:textSize="32sp"/>
15 </LinearLayout>

MainActivity:

 1 package com.arrayadapter;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.widget.AdapterView;
 7 import android.widget.ArrayAdapter;
 8 import android.widget.Spinner;
 9 
10 import java.util.ArrayList;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     private Spinner spinner1;
15     private Spinner spinner2;
16     private ArrayList<ArrayList<String>> arrayLists;
17     private ArrayList<String> arrayProvince;
18     private ArrayList<String> arrayCountry;
19     private ArrayAdapter<String> adapterProvince;
20     private ArrayAdapter<String> adapterCountry;
21     private ArrayList<String> arrayHanzi;
22     private ArrayList<String> arrayCharacter;
23 
24     @Override
25     protected void onCreate(Bundle savedInstanceState) {
26         super.onCreate(savedInstanceState);
27         setContentView(R.layout.activity_main);
28         initView();
29     }
30 
31     private void initView() {
32         spinner1 = (Spinner) findViewById(R.id.province);
33         spinner2 = (Spinner) findViewById(R.id.country);
34 
35         arrayLists = new ArrayList<>();
36         arrayProvince = new ArrayList<>();
37         arrayCountry = new ArrayList<>();
38         arrayHanzi = new ArrayList<>();
39         arrayCharacter = new ArrayList<>();
40 
41         arrayProvince.add("数字");
42         arrayProvince.add("汉字");
43         arrayProvince.add("字母");
44 
45         for (int i = 0; i < 9; i++) {
46             arrayCountry.add(i + "");
47             arrayCharacter.add((char) ('a' + i) + "");
48         }
49 
50         arrayHanzi.add("壹");
51         arrayHanzi.add("贰");
52         arrayHanzi.add("叁");
53         arrayHanzi.add("肆");
54 
55         arrayLists.add(arrayCountry);
56         arrayLists.add(arrayHanzi);
57         arrayLists.add(arrayCharacter);
58 
59         adapterProvince = new ArrayAdapter<>(getApplicationContext(), R.layout.spinner_item, R.id.spinner_tv, arrayProvince);
60 
61         adapterCountry = new ArrayAdapter<>(getApplicationContext(), R.layout.spinner_item, R.id.spinner_tv, arrayLists.get(0));
62 
63         spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
64             @Override
65             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
66 
67                 adapterCountry = new ArrayAdapter<>(getApplicationContext(), R.layout.spinner_item, R.id.spinner_tv, arrayLists.get(position));
68                 spinner2.setAdapter(adapterCountry);
69             }
70 
71             @Override
72             public void onNothingSelected(AdapterView<?> parent) {
73 
74             }
75         });
76 
77         spinner1.setAdapter(adapterProvince);
78         spinner2.setAdapter(adapterCountry);
79     }
80 }

用简单的数字文字代替,Spinner里的资源也可以在string中定义成数组元素。