zoukankan      html  css  js  c++  java
  • Android Spinner级联菜单实现

    在开发中我们经常要遇到类似Spinner级联菜单的效果,下面就是Spinner级联菜单效果的实现

    activity_main.xml

     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="wrap_content"
    10         android:orientation="horizontal" >
    11 
    12         <!-- android:text="@string/city_prompt" 提示信息 -->
    13         <!-- android:entries="@array/city_labels"下拉列表的内容 -->
    14 
    15 
    16         <!-- 一级栏目 -->
    17 
    18         <Spinner
    19             android:id="@+id/city"
    20             android:layout_width="wrap_content"
    21             android:layout_height="wrap_content"
    22             android:entries="@array/city_labels"
    23             android:text="@string/city_prompt" />
    24         <!-- 二级栏目 -->
    25 
    26         <Spinner
    27             android:id="@+id/area"
    28             android:layout_width="wrap_content"
    29             android:layout_height="wrap_content"
    30             android:text="@string/area_prompt" />
    31     </LinearLayout>
    32 
    33     <LinearLayout
    34         android:layout_width="fill_parent"
    35         android:layout_height="wrap_content"
    36         android:orientation="horizontal" >
    37 
    38         <TextView
    39             android:id="@+id/tex_city"
    40             android:layout_width="wrap_content"
    41             android:layout_height="wrap_content"
    42             android:text="city" />
    43 
    44         <TextView
    45             android:id="@+id/tex_area"
    46             android:layout_width="wrap_content"
    47             android:layout_height="wrap_content" 
    48             android:text="area"
    49             />
    50     </LinearLayout>
    51 
    52 </LinearLayout>

    array.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <resources>
     3      <string-array name="city_labels">
     4         <item>请选择:</item>
     5           <item>北京</item>
     6             <item>上海</item>
     7                 <item>武汉</item>
     8     </string-array>
     9    
    10 </resources>

    strings.xml

     1 <resources>
     2 
     3     <string name="app_name">SpinnerJi</string>
     4     <string name="hello_world">Hello world!</string>
     5     <string name="menu_settings">Settings</string>
     6     <string name="title_activity_main">MainActivity</string>
     7     <string name="city_app">下拉列表框选项</string>
     8     <string name="city_prompt">选择你喜欢的城市</string>
     9     <string name="area_prompt">选择你喜欢的城区</string>
    10 
    11 </resources>

    activity

     1 package com.example.spinnerji;
     2 import android.app.Activity;
     3 import android.os.Bundle;
     4 import android.view.View;
     5 import android.widget.AdapterView;
     6 import android.widget.AdapterView.OnItemSelectedListener;
     7 import android.widget.ArrayAdapter;
     8 import android.widget.Spinner;
     9 import android.widget.TextView;
    10 
    11 public class MainActivity extends Activity {
    12     private Spinner city;// 一级菜单
    13     private Spinner area;// 二级菜单
    14     private TextView cityTextView;
    15     private TextView areTextView;
    16     private String[][] areaData = new String[][] {
    17             {"请选择:"},
    18             {"朝阳区","海淀区","西城区","大兴区","怀柔区"},
    19             {"闵行区"},
    20             {"洪山区","武昌区","东西湖区"}};
    21     private ArrayAdapter<CharSequence> adapterArea;
    22 
    23     @Override
    24     public void onCreate(Bundle savedInstanceState) {
    25         super.onCreate(savedInstanceState);
    26         setContentView(R.layout.activity_main);
    27         cityTextView=(TextView) findViewById(R.id.tex_city);
    28         areTextView=(TextView) findViewById(R.id.tex_area);
    29         city = (Spinner) findViewById(R.id.city);// 取得下拉列表框
    30         // 由于一个城市有多个市区,为了简单起见下面我们定义一个数组,通过数组保存若干个城市,而实际中需要单独的数据
    31         area = (Spinner) findViewById(R.id.area);// 取得下拉列表框
    32         city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
    33         area.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
    34         city.setPrompt("选择你喜欢的城市");
    35         city.setPrompt("选择你喜欢的城区");
    36     }
    37 
    38     private class OnItemSelectedListenerImpl implements OnItemSelectedListener {
    39         public void onItemSelected(AdapterView<?> parent, View view,
    40                 int position, long id) {// 选项改变的时候触发
    41             
    42             switch (parent.getId()) {
    43             case R.id.city:
    44                 String value = (String) parent.getItemAtPosition(position);// 得到选中的选项
    45                 cityTextView.setText(value);
    46                 adapterArea = new ArrayAdapter<CharSequence>(MainActivity.this,android.R.layout.simple_expandable_list_item_1,// 显示风格
    47                         areaData[position]);// 在列表视图中所代表的对象。
    48                 area.setAdapter(adapterArea);// 把adapterArea添加到area
    49                 break;
    50 
    51             case R.id.area:
    52                 String value2 = (String) parent.getItemAtPosition(position);// 得到选中的选项
    53                 areTextView.setText(value2);
    54                 break;
    55             }
    56             
    57         }
    58 
    59         public void onNothingSelected(AdapterView<?> arg0) {// 没有选项的时候触发
    60             // 一般不关心
    61 
    62         }
    63 
    64     }
    65 }
  • 相关阅读:
    一款开源免费跨浏览器的视频播放器--videojs使用介绍(转)
    forward内部跳转 和redirect重定向跳转的区别
    心理学--斯纳金
    心理学--大脑
    心理学--普及
    经济--国债,外汇
    经济--公积金
    经济--技术分析
    经济--分级基金3
    经济--分级基金
  • 原文地址:https://www.cnblogs.com/all88/p/4097494.html
Copyright © 2011-2022 走看看