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>