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>