android下拉菜单三级联动

Android中的下拉菜单联动应用非常普遍,android中的下拉菜单用Spinner就能实现,以下列子通过简单的代码实现三级菜单联动。

一 样式文件

[html] view plain copy
 
  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="com.example.spinner.MainActivity" >  
  10.   
  11.     <Spinner android:layout_width="match_parent"  
  12.         android:layout_height="wrap_content"  
  13.           
  14.         android:id="@+id/spn"  
  15.         android:dropDownWidth="200dp"/>  
  16.       
  17.     <Spinner android:layout_width="match_parent"  
  18.         android:layout_height="wrap_content"  
  19.         android:layout_below="@id/spn"  
  20.         android:id="@+id/city"  
  21.         android:dropDownWidth="200dp"/>  
  22.     <Spinner android:layout_width="match_parent"  
  23.         android:layout_height="wrap_content"  
  24.         android:layout_below="@id/city"  
  25.         android:id="@+id/counstryside"  
  26.         android:dropDownWidth="200dp"/>  
  27.   
  28. </RelativeLayout>  

二 联动逻辑代码

[java] view plain copy
 
  1. package com.example.spinner;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.AdapterView;  
  7. import android.widget.AdapterView.OnItemSelectedListener;  
  8. import android.widget.ArrayAdapter;  
  9. import android.widget.Spinner;  
  10.   
  11. /** 
  12.  * @author ZMC 
  13.  * 三级联动主要是灵活的应用三维数组 
  14.  */  
  15. public class MainActivity extends Activity {  
  16.     private String province[] = new String[]{"江西","湖南"};  
  17.     private Spinner spinner1,spinner2,spinner3;  
  18.     private int provinceindex;  
  19.     private String city [][] = {{"南昌","赣州"},{"长沙","湘潭"}};  
  20.     private String counstryside [][][] = {{{"青山湖区","南昌县"},{"章贡区","赣县"}},{{"长沙县","沙县"},{"湘潭县","象限"}}};  
  21.     ArrayAdapter<String> adapter1,adapter2,adapter3;  
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.activity_main);  
  26.         spinner1 = (Spinner) findViewById(R.id.spn);  
  27.         adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,province);  
  28.         spinner1.setAdapter(adapter1);  
  29.           
  30.         spinner2  = (Spinner)findViewById(R.id.city);  
  31.         adapter2 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,city[0]);  
  32.         spinner2.setAdapter(adapter2);  
  33.           
  34.         spinner3 = (Spinner)findViewById(R.id.counstryside);  
  35.         adapter3 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,counstryside[0][0]);  
  36.         spinner3.setAdapter(adapter3);  
  37.         spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {  
  38.   
  39.             @Override  
  40.             public void onItemSelected(AdapterView<?> parent, View view,  
  41.                     int position, long id) {  
  42.                 // TODO Auto-generated method stub  
  43.                 provinceindex = position;  
  44.                 adapter2 = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,city[position]);  
  45.                 spinner2.setAdapter(adapter2);  
  46.             }  
  47.   
  48.             @Override  
  49.             public void onNothingSelected(AdapterView<?> parent) {  
  50.                 // TODO Auto-generated method stub  
  51.                   
  52.             }  
  53.         });  
  54.           
  55.         spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {  
  56.   
  57.             @Override  
  58.             public void onItemSelected(AdapterView<?> parent, View view,  
  59.                     int position, long id) {  
  60.                 // TODO Auto-generated method stub  
  61.                   
  62.                 adapter3 = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,counstryside[provinceindex][position]);  
  63.                 //adapter3.notifyDataSetChanged();  
  64.                 spinner3.setAdapter(adapter3);  
  65.             }  
  66.   
  67.             @Override  
  68.             public void onNothingSelected(AdapterView<?> parent) {  
  69.                 // TODO Auto-generated method stub  
  70.                 //当时据为空的时候触发的  
  71.             }  
  72.         });  
  73.           
  74.           
  75.     }  
  76.       
  77.       
  78. }  

三 结果:

四 总结

三级联动主要是灵活的应用三维数组,这样能很方便的通过数组索引将三个菜单关联,同时通过设置Spinner的setOnItemSelectedListener来监听选择的动作,动态设置下拉菜单的内容。
posted @ 2016-12-14 15:07  天涯海角路  阅读(981)  评论(0)    收藏  举报