Hello,Views(六)下拉框Spinner(附源码)

前言

本文根据官方教程适当翻译而来。(源码下载

1.新建工程HelloSpinner

2.在main.xml里面添加一个spinner,设置Android:promt属性,这是一个提示属性,同时为默认的textview修改Android:text属性,它们将引用同一个string文本,如何理解呢,看了下面的图应该有所意会了。实现的效果是下图中红圈内的文字提示:

23

局部的main.xml如下:

<TextView 
android:layout_width="match_parent"
android:layout_height
="wrap_content"
android:text
="@string/planet_prompt" />


<Spinner
android:id="@+id/spinner1"
android:layout_width
="match_parent"
android:layout_height
="wrap_content"
android:prompt
="@string/planet_prompt"/>

 

3.在onCreate()里面添加操作spinner的代码:

@Override 
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}

 

4.

解释一下上面的两句ArrayAdapter.createFromResource(this,R.array.planets_array, android.R.layout.simple_spinner_item);和adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);关于前者它的函数原型如下

 

public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)
参数:

context 应用的上下文

textArrayResId 数据源数组标识
textViewResId 用于显示的布局view

返回值:ArrayAdapter<CharSequence>

结合本例, R.array.planets_array 标识了我们要用到的字符串数组.R.layout.simple_spinner_item 标识了系统定义的一个标准的Spinner的布局外观。

而后者adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);定义的是spinner的每一个item的布局外观。

5.为了响应用户选择下拉框中某一项的事件,还要添加一个OnItemSelectedListener监听,具体实现是,新建一个MyOnItemSelectedListener 类继承OnItemSelectedListener类,在其中重写两个方法onItemSelected(),onNothingSelected(),它们分别处理item被选中和没选的事件:

public class MyOnItemSelectedListener implements OnItemSelectedListener 
{

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
Toast.makeText(parent.getContext(),
"The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG)
.show();
}

public void onNothingSelected(AdapterView parent)
{
// Do nothing.
}
}

 

5.OK,运行。(源码下载

posted @ 2012-02-21 14:38  小文字  阅读(6430)  评论(0编辑  收藏  举报