<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="city_labels">
<item>中国-上海</item>
<item>中国-北京</item>
<item>中国-广州</item>
<item>中国-海南</item>
</string-array>
</resources>
(Spinner) android中Spinner的使用
Spinner这个组件配置之后需要进行内容的设置,而内容可以使用配置文件完成,也可以通过ArrayAdapter类进行封装操作完成
单机选项public void ( l)
选项改变 public void ( l)
长按事件 public void ( l)
主要使用到事件就在于事件的变更
下面是城市的选择列表
1.在values文件夹中创建一个city_data.xml
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) {// 没有选项的时候触发
// 一般不关心
}
}
}
结果