(Spinner) android中Spinner的使用

来源:互联网 发布:北京精雕编程视频教程 编辑:程序博客网 时间:2024/06/10 18:11

(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" >    <!-- 接收下拉列表的选项 -->    <TextView        android: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"下拉列表的内容 -->    <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" /></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;// 事件发生后取得下拉列表框的内容 @Override public 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"下拉列表的内容 -->    <!-- 一级栏目 -->    <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>

 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; @Override public 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) {// 没有选项的时候触发   // 一般不关心  } }}

 结果


原创粉丝点击