(Spinner) android中Spinner的使用
(Spinner) android中Spinner的使用
Spinner這個組件配置之后需要進行內容的設置,而內容可以使用配置文件完成,也可以通過ArrayAdapter類進行封裝操作完成
單機選項public void?( l)
選項改變 public void?( l)
長按事件 public void?( l)
主要使用到事件就在于事件的變更
下面是城市的選擇列表
1.在values文件夾中創建一個city_data.xml
<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="city_labels"><item>中國-上海</item><item>中國-北京</item><item>中國-廣州</item><item>中國-海南</item></string-array></resources>?
2.在String.xml文件中定義String屬性
<?xml version="1.0" encoding="utf-8"?> <resources><string name="hello">Hello World, MainActivity!</string><string name="app_name">Spinner3</string><string name="city_app">下拉列表框選項</string><string name="city_prompt">選擇你喜歡的城市</string> </resources>?
3.在layout的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" ><!-- 接收下拉列表的選項 --><TextViewandroid:id="@+id/info"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/city_prompt" /><!-- android:text="@string/city_prompt" 提示信息 --><!-- android:entries="@array/city_labels"下拉列表的內容 --><Spinnerandroid:id="@+id/city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/city_labels"android:text="@string/city_prompt" /></LinearLayout>?
4.在Activity中完成相應事件處理的操作
package com.qn.spinner;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView;public class MainActivity extends Activity {/** Called when the activity is first created. */private Spinner city;// 下拉列表框的內容private TextView info;// 事件發生后取得下拉列表框的內容@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);city = (Spinner) findViewById(R.id.city);// 取得下拉列表框info = (TextView) findViewById(R.id.info);// 取得文本顯示控件city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());}private class OnItemSelectedListenerImpl implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// 選項改變的時候觸發String value = (String) parent.getItemAtPosition(position);// 得到選中的選項info.setText("你喜歡的城市" + value);// 選項的內容在TextView中顯示}public void onNothingSelected(AdapterView<?> arg0) {// 沒有選項的時候觸發// 一般不關心}} }?
結果
下面是級聯菜單
1.在values文件夾中創建一個city_data.xml
<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="city_labels"><item>中國-上海</item><item>中國-北京</item><item>中國-廣州</item><item>中國-海南</item></string-array></resources>2.在String.xml文件中定義String屬性
<?xml version="1.0" encoding="utf-8"?> <resources><string name="hello">Hello World, MainActivity!</string><string name="app_name">Spinner3</string><string name="city_app">下拉列表框選項</string><string name="city_prompt">選擇你喜歡的城市</string><string name="area_prompt">選擇你喜歡的城區</string> </resources>3.在layout的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="horizontal" ><!-- android:text="@string/city_prompt" 提示信息 --><!-- android:entries="@array/city_labels"下拉列表的內容 --><!-- 一級欄目 --><Spinnerandroid:id="@+id/city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/city_labels"android:text="@string/city_prompt" /><!-- 二級欄目 --><Spinnerandroid:id="@+id/area"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/area_prompt"/></LinearLayout>?4.在Activity中完成相應事件處理的操作
二級欄目中定義了數組進行填入數據,
用數組填入數據必須,用ArrayAdapter
所以要準備ArrayAdapter
private ArrayAdapter<CharSequence> adapterArea;基本都用CharSequence 應為我們還是要標準化 以借口作為我們的標準,能使接口就不適應類(String)
adapterArea=new ArrayAdapter<CharSequence>()
使用這個構造方法,因為可以直接接受數組
publicArrayAdapter( context, int resource, int textViewResourceId, T[] objects) package com.qn.spinner;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.Button; import android.widget.Spinner; import android.widget.TextView;public class MainActivity extends Activity {/** Called when the activity is first created. */private Spinner city;// 一級菜單private Spinner area;//二級菜單private String[][] areaData=new String [][]{{"東城","西城","朝陽","大興"}//針對一級子信息,{"黃普","東方名族","楊浦","大興"}//針對二級子信息,{"廣東"}};//針對三級子信息private ArrayAdapter<CharSequence> adapterArea;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);city = (Spinner) findViewById(R.id.city);// 取得下拉列表框//由于一個城市有多個市區,為了簡單起見下面我們定義一個數組,通過數組保存若干個城市,而實際中需要單獨的數據area = (Spinner) findViewById(R.id.area);// 取得下拉列表框city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());}private class OnItemSelectedListenerImpl implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// 選項改變的時候觸發adapterArea=new ArrayAdapter<CharSequence>(MainActivity.this,android.R.layout.simple_spinner_item,//顯示風格areaData[position]);//在列表視圖中所代表的對象。area.setAdapter(adapterArea);//把adapterArea添加到area}public void onNothingSelected(AdapterView<?> arg0) {// 沒有選項的時候觸發// 一般不關心}} }?結果
總結
以上是生活随笔為你收集整理的(Spinner) android中Spinner的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【android开发】 修改控件Spin
- 下一篇: 如何设计一个优秀的向导式界面(Wizar