无标题文档
人多不足以依赖,要生存只有靠自己。
      深窥自己的心,而后发觉一切的奇迹在你自己。
          凡事皆有终结,因此,耐心是赢得成功的一种手段。

Spinner的级联效果实现

 

Spinner这个组件配置之后需要进行内容的设置,而内容可以使用配置文件完成,也可以通过ArrayAdapter类进行封装操作完成

 

 

 
package com.javenspinner;

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;
import android.widget.TextView;

public class MainActivity extends Activity {
    private Spinner city;// 一级菜单
    private Spinner area;// 二级菜单
    private TextView cityTextView;
    private TextView areTextView;
    private String[][] areaData = new String[][] {
            {"请选择:"},
            {"朝阳区","海淀区","西城区","大兴区","怀柔区"},
            {"闵行区"},
            {"洪山区","武昌区","东西湖区"}};
    private ArrayAdapter<CharSequence> adapterArea;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cityTextView=(TextView) findViewById(R.id.tex_city);
        areTextView=(TextView) findViewById(R.id.tex_area);
        city = (Spinner) findViewById(R.id.city);// 取得下拉列表框
        // 由于一个城市有多个市区,为了简单起见下面我们定义一个数组,通过数组保存若干个城市,而实际中需要单独的数据
        area = (Spinner) findViewById(R.id.area);// 取得下拉列表框
        city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
        area.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
        city.setPrompt("选择你喜欢的城市");
        city.setPrompt("选择你喜欢的城区");
    }

    private class OnItemSelectedListenerImpl implements OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {// 选项改变的时候触发
            
            switch (parent.getId()) {
            case R.id.city:
                String value = (String) parent.getItemAtPosition(position);// 得到选中的选项
                cityTextView.setText(value);
                adapterArea = new ArrayAdapter<CharSequence>(MainActivity.this,
                        android.R.layout.simple_expandable_list_item_1,// 显示风格
                        areaData[position]);// 在列表视图中所代表的对象。
                area.setAdapter(adapterArea);// 把adapterArea添加到area
                break;

            case R.id.area:
                String value2 = (String) parent.getItemAtPosition(position);// 得到选中的选项
                areTextView.setText(value2);
                break;
            }
            
        }

        public void onNothingSelected(AdapterView<?> arg0) {// 没有选项的时候触发
            // 一般不关心

        }

    }
}

main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <!-- android:text="@string/city_prompt" 提示信息 -->
        <!-- android:entries="@array/city_labels"下拉列表的内容 -->


        <!-- 一级栏目 -->

        <Spinner
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/city_labels"
            android:text="@string/city_prompt" />
        <!-- 二级栏目 -->

        <Spinner
            android:id="@+id/area"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/area_prompt" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tex_city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="city" />

        <TextView
            android:id="@+id/tex_area"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="area"
            />
    </LinearLayout>

</LinearLayout>

String.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Spinner</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

    <string name="city_app">下拉列表框选项</string>
    <string name="city_prompt">选择你喜欢的城市</string>
     <string name="area_prompt">选择你喜欢的城区</string>
</resources>

 

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="city_labels">
        <item>请选择:</item>
          <item>北京</item>
            <item>上海</item>
                <item>武汉</item>
    </string-array>
   
</resources>

 

posted @ 2013-04-24 11:41  酷玩时刻  阅读(3781)  评论(0编辑  收藏  举报
友情链接:快递查询 快递查询