Android实战简易教程<二>(Spinner下拉级联效果)

时间:2022-10-13 22:45:08

一、实现功能

废话不多说,直接上代码

strings.xml:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, Hello!</string>  
  4.     <string name="app_name"></string>  
  5.     <string-array name="province">  
  6.         <item >江苏省</item>  
  7.         <item >山东省</item>  
  8.         <item >浙江省</item>  
  9.     </string-array>  
  10. </resources>  


 

看一下布局文件main.xml:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <LinearLayout  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="fill_parent"  
  10.         android:orientation="horizontal" >  
  11.   
  12.         <Spinner  
  13.             android:id="@+id/spinner1"  
  14.             android:layout_width="wrap_content"  
  15.             android:layout_height="wrap_content"  
  16.             android:entries="@array/province"/>  
  17.   
  18.         <Spinner  
  19.             android:id="@+id/spinner2"  
  20.             android:layout_width="wrap_content"  
  21.             android:layout_height="wrap_content" />  
  22.     </LinearLayout>  
  23.   
  24.     <TextView  
  25.         android:id="@+id/text"  
  26.         android:layout_width="match_parent"  
  27.         android:layout_height="wrap_content" >  
  28.     </TextView>  
  29.   
  30. </LinearLayout>  


MainActivity代码如下:

[java] view plaincopy
  1. package org.yayun.demo;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.DialogInterface;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.view.View.OnFocusChangeListener;  
  11. import android.widget.AdapterView;  
  12. import android.widget.AdapterView.OnItemSelectedListener;  
  13. import android.widget.ArrayAdapter;  
  14. import android.widget.Button;  
  15. import android.widget.EditText;  
  16. import android.widget.Spinner;  
  17. import android.widget.TextView;  
  18.   
  19. public class MainActivity extends Activity {  
  20.     private Spinner spinner1;  
  21.     private Spinner spinner2;  
  22.     private TextView textView;  
  23.     private String[][] dataStrings = { { "南京市""徐州市""苏州市""泰州市""淮安市", },  
  24.             { "济南市""威海市""临沂市", }, { "杭州市""宁波市""嘉兴市", }, };  
  25.     private ArrayAdapter<CharSequence> adapter = null;  
  26.   
  27.     public void onCreate(Bundle savedInstanceState) {  
  28.         super.onCreate(savedInstanceState); // 生命周期方法  
  29.         super.setContentView(R.layout.main); // 设置要使用的布局管理器  
  30.         spinner1 = (Spinner) findViewById(R.id.spinner1);  
  31.         spinner2 = (Spinner) findViewById(R.id.spinner2);  
  32.         textView = (TextView) findViewById(R.id.text);  
  33.         spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {  
  34.   
  35.             public void onItemSelected(AdapterView<?> parent, View view,  
  36.                     int position, long id) {  
  37.                 adapter = new ArrayAdapter<CharSequence>(MainActivity.this,  
  38.                         android.R.layout.simple_spinner_item,  
  39.                         dataStrings[position]);//根据position确定第二个spinner中要填充的数据  
  40.                 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置显示样式  
  41.                 spinner2.setAdapter(adapter);  
  42.                   
  43.             }  
  44.   
  45.             public void onNothingSelected(AdapterView<?> parent) {  
  46.                 // TODO Auto-generated method stub  
  47.   
  48.             }  
  49.         });  
  50.           
  51.     }  
  52. }  


运行实例:

Android实战简易教程<二>(Spinner下拉级联效果)

二、实现监听

修改MainActivity.java代码:

[java] view plaincopy
  1. package org.yayun.demo;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.DialogInterface;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.view.View.OnFocusChangeListener;  
  11. import android.widget.AdapterView;  
  12. import android.widget.AdapterView.OnItemSelectedListener;  
  13. import android.widget.ArrayAdapter;  
  14. import android.widget.Button;  
  15. import android.widget.EditText;  
  16. import android.widget.Spinner;  
  17. import android.widget.TextView;  
  18.   
  19. public class MainActivity extends Activity {  
  20.     private Spinner spinner1;  
  21.     private Spinner spinner2;  
  22.     private TextView textView;  
  23.     private String[][] dataStrings = { { "南京市""徐州市""苏州市""泰州市""淮安市", },  
  24.             { "济南市""威海市""临沂市", }, { "杭州市""宁波市""嘉兴市", }, };  
  25.     private ArrayAdapter<CharSequence> adapter = null;  
  26.     String string1;  
  27.     String string2;  
  28.   
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState); // 生命周期方法  
  31.         super.setContentView(R.layout.main); // 设置要使用的布局管理器  
  32.         spinner1 = (Spinner) findViewById(R.id.spinner1);  
  33.         spinner2 = (Spinner) findViewById(R.id.spinner2);  
  34.         textView = (TextView) findViewById(R.id.text);  
  35.   
  36.         spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {  
  37.   
  38.             public void onItemSelected(AdapterView<?> parent, View view,  
  39.                     int position, long id) {  
  40.                 adapter = new ArrayAdapter<CharSequence>(MainActivity.this,  
  41.                         android.R.layout.simple_spinner_item,  
  42.                         dataStrings[position]);// 根据position确定第二个spinner中要填充的数据  
  43.                 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置显示样式  
  44.                 spinner2.setAdapter(adapter);  
  45.                 string1 = parent.getItemAtPosition(position).toString();// 获取当前显示省份  
  46.   
  47.             }  
  48.   
  49.             public void onNothingSelected(AdapterView<?> parent) {  
  50.                 // TODO Auto-generated method stub  
  51.   
  52.             }  
  53.         });  
  54.         spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {  
  55.   
  56.             public void onItemSelected(AdapterView<?> parent, View view,  
  57.                     int position, long id) {  
  58.                 string2 = parent.getItemAtPosition(position).toString();// 获取当前显示省份  
  59.                 textView.setText(string1 + string2);  
  60.   
  61.             }  
  62.   
  63.             public void onNothingSelected(AdapterView<?> parent) {  
  64.                 // TODO Auto-generated method stub  
  65.   
  66.             }  
  67.         });  
  68.   
  69.     }  
  70. }  


运行实例如下:

Android实战简易教程<二>(Spinner下拉级联效果)

 

总结

1.string1 = parent.getItemAtPosition(position).toString();// 获取当前显示省份