Android练习——Spinner二级联动_城市选择
16lz
2021-12-04
样式部分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 <TextView12 android:id="@+id/textView1"13 android:layout_width="wrap_content"14 android:layout_height="wrap_content"15 android:text="请选择城市" />16 17 <Spinner18 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 <Spinner25 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 @Override17 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 @Override44 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 @Override66 public void onNothingSelected(AdapterView<?> arg0) {67 // TODO Auto-generated method stub68 69 }70 71 });72 73 }74 75 @Override76 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 }
实现效果:
更多相关文章
- Android屏幕尺寸、标题栏高度、状态栏高度、当前View尺寸
- 取消自动获取焦点(默认进来焦点到edittext),取消进入呼出软件盘
- Android(安卓)获取手机卡相关信息
- Android中定义数组与使用
- android:launchMode="singleTask" intent获取到的值没有更新
- Android(安卓)JNI(Java Native Interface)技术介绍
- Android获得摄像头详细信息
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面 .
- Android(安卓)原生获取地理位置