多个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中定义成数组元素。
浙公网安备 33010602011771号