android下拉菜单三级联动
Android中的下拉菜单联动应用非常普遍,android中的下拉菜单用Spinner就能实现,以下列子通过简单的代码实现三级菜单联动。
一 样式文件
- <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="com.example.spinner.MainActivity" >
- <Spinner android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/spn"
- android:dropDownWidth="200dp"/>
- <Spinner android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/spn"
- android:id="@+id/city"
- android:dropDownWidth="200dp"/>
- <Spinner android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/city"
- android:id="@+id/counstryside"
- android:dropDownWidth="200dp"/>
- </RelativeLayout>
二 联动逻辑代码
- package com.example.spinner;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.ArrayAdapter;
- import android.widget.Spinner;
- /**
- * @author ZMC
- * 三级联动主要是灵活的应用三维数组
- */
- public class MainActivity extends Activity {
- private String province[] = new String[]{"江西","湖南"};
- private Spinner spinner1,spinner2,spinner3;
- private int provinceindex;
- private String city [][] = {{"南昌","赣州"},{"长沙","湘潭"}};
- private String counstryside [][][] = {{{"青山湖区","南昌县"},{"章贡区","赣县"}},{{"长沙县","沙县"},{"湘潭县","象限"}}};
- ArrayAdapter<String> adapter1,adapter2,adapter3;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- spinner1 = (Spinner) findViewById(R.id.spn);
- adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,province);
- spinner1.setAdapter(adapter1);
- spinner2 = (Spinner)findViewById(R.id.city);
- adapter2 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,city[0]);
- spinner2.setAdapter(adapter2);
- spinner3 = (Spinner)findViewById(R.id.counstryside);
- adapter3 = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,counstryside[0][0]);
- spinner3.setAdapter(adapter3);
- spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id) {
- // TODO Auto-generated method stub
- provinceindex = position;
- adapter2 = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,city[position]);
- spinner2.setAdapter(adapter2);
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- // TODO Auto-generated method stub
- }
- });
- spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id) {
- // TODO Auto-generated method stub
- adapter3 = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,counstryside[provinceindex][position]);
- //adapter3.notifyDataSetChanged();
- spinner3.setAdapter(adapter3);
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- // TODO Auto-generated method stub
- //当时据为空的时候触发的
- }
- });
- }
- }
三 结果:
四 总结
三级联动主要是灵活的应用三维数组,这样能很方便的通过数组索引将三个菜单关联,同时通过设置Spinner的setOnItemSelectedListener来监听选择的动作,动态设置下拉菜单的内容。