(Spinner) android中Spinner的使用
(Spinner) android中Spinner的使用
Spinner這個(gè)組件配置之后需要進(jìn)行內(nèi)容的設(shè)置,而內(nèi)容可以使用配置文件完成,也可以通過ArrayAdapter類進(jìn)行封裝操作完成
單機(jī)選項(xiàng)public void?( l)
選項(xiàng)改變 public void?( l)
長按事件 public void?( l)
主要使用到事件就在于事件的變更
下面是城市的選擇列表
1.在values文件夾中創(chuàng)建一個(gè)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">下拉列表框選項(xiàng)</string><string name="city_prompt">選擇你喜歡的城市</string> </resources>?
3.在layout的Main.xml配置文件中 添加相應(yīng)的控件
<?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" ><!-- 接收下拉列表的選項(xiàng) --><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"下拉列表的內(nèi)容 --><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中完成相應(yīng)事件處理的操作
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;// 下拉列表框的內(nèi)容private TextView info;// 事件發(fā)生后取得下拉列表框的內(nèi)容@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) {// 選項(xiàng)改變的時(shí)候觸發(fā)String value = (String) parent.getItemAtPosition(position);// 得到選中的選項(xiàng)info.setText("你喜歡的城市" + value);// 選項(xiàng)的內(nèi)容在TextView中顯示}public void onNothingSelected(AdapterView<?> arg0) {// 沒有選項(xiàng)的時(shí)候觸發(fā)// 一般不關(guān)心}} }?
結(jié)果
下面是級(jí)聯(lián)菜單
1.在values文件夾中創(chuàng)建一個(gè)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">下拉列表框選項(xiàng)</string><string name="city_prompt">選擇你喜歡的城市</string><string name="area_prompt">選擇你喜歡的城區(qū)</string> </resources>3.在layout的Main.xml配置文件中 添加相應(yīng)的控件
<?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"下拉列表的內(nèi)容 --><!-- 一級(jí)欄目 --><Spinnerandroid:id="@+id/city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/city_labels"android:text="@string/city_prompt" /><!-- 二級(jí)欄目 --><Spinnerandroid:id="@+id/area"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/area_prompt"/></LinearLayout>?4.在Activity中完成相應(yīng)事件處理的操作
二級(jí)欄目中定義了數(shù)組進(jìn)行填入數(shù)據(jù),
用數(shù)組填入數(shù)據(jù)必須,用ArrayAdapter
所以要準(zhǔn)備ArrayAdapter
private ArrayAdapter<CharSequence> adapterArea;基本都用CharSequence 應(yīng)為我們還是要標(biāo)準(zhǔn)化 以借口作為我們的標(biāo)準(zhǔn),能使接口就不適應(yīng)類(String)
adapterArea=new ArrayAdapter<CharSequence>()
使用這個(gè)構(gòu)造方法,因?yàn)榭梢灾苯咏邮軘?shù)組
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;// 一級(jí)菜單private Spinner area;//二級(jí)菜單private String[][] areaData=new String [][]{{"東城","西城","朝陽","大興"}//針對(duì)一級(jí)子信息,{"黃普","東方名族","楊浦","大興"}//針對(duì)二級(jí)子信息,{"廣東"}};//針對(duì)三級(jí)子信息private ArrayAdapter<CharSequence> adapterArea;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);city = (Spinner) findViewById(R.id.city);// 取得下拉列表框//由于一個(gè)城市有多個(gè)市區(qū),為了簡單起見下面我們定義一個(gè)數(shù)組,通過數(shù)組保存若干個(gè)城市,而實(shí)際中需要單獨(dú)的數(shù)據(jù)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) {// 選項(xiàng)改變的時(shí)候觸發(fā)adapterArea=new ArrayAdapter<CharSequence>(MainActivity.this,android.R.layout.simple_spinner_item,//顯示風(fēng)格areaData[position]);//在列表視圖中所代表的對(duì)象。area.setAdapter(adapterArea);//把a(bǔ)dapterArea添加到area}public void onNothingSelected(AdapterView<?> arg0) {// 沒有選項(xiàng)的時(shí)候觸發(fā)// 一般不關(guān)心}} }?結(jié)果
總結(jié)
以上是生活随笔為你收集整理的(Spinner) android中Spinner的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【android开发】 修改控件Spin
- 下一篇: 如何设计一个优秀的向导式界面(Wizar