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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM