这篇简单介绍下Android中下拉列表Spinner的用法,话不多说,先上图
布局文件中的spinner.xml如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget28" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 文字一般用sp作为长度单位 --> <TextView android:id="@+id/TextView_Show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="可以开始选择所在城市了。" android:textSize="25sp"/> <Spinner android:id="@+id/spinner_City" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
数据源arrays.xml(防止硬编码)如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="cities"> <item>北京</item> <item>上海</item> <item>广州</item> <item>深圳</item> <item>杭州</item> <item>成都</item> <item>大连</item> <item>南京</item> </string-array> </resources>
主程序中的SpinnerActivity.java如下
public class SpinnerActivity extends Activity { //方式一 声明cities字符串数组,为Spinner的下拉列表预定义数据: //方式一 private static final String[] cities={"北京","上海","广州","深圳","杭州","成都","大连","南京"}; private TextView text; private Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spinner); text=(TextView)findViewById(R.id.TextView_Show); spinner=(Spinner)findViewById(R.id.spinner_City); //实例化ArrayAdapter: //方式一 ArrayAdapter<String> adapter =new ArrayAdapter<String>( //方式一 this, //方式一 android.R.layout.simple_spinner_item, //方式一 cities); ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource( this, R.array.cities, android.R.layout.simple_spinner_item); //String类型是CharSequence接口的实现 //构建适配器为ListView绑定数据 //设置Spinner的下拉列表显示样式 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将adapter添加到spinner中 spinner.setAdapter(adapter); //设置Spinner的一些属性 spinner.setPrompt("请选择城市:");//prompt:提示 spinner.setSelection(0,true); //添加Spinner事件监听 spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) { //方式一 text.setText("你所在的城市是:"+cities[arg2]); //arg0是适配器视图对象,这里指下拉列表视图。AdapterView 是内容由适配器来决定的视图类,<?>是适配器里内容的类型。 //arg1是适配器视图里的被点击的对象(即被选中的那一项),arg2被选中项的位置,arg3选中项所在行的行ID号 text.setText("你所在的城市是:"+arg0.getItemAtPosition(arg2).toString()); //设置显示当前选择的项 arg0.setVisibility(View.VISIBLE); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } }
这里有个小技巧:自动导入所需包的快捷键shift+ctrl+o