Spinner使用简介

来源:互联网 发布:2017美国10月非农数据 编辑:程序博客网 时间:2024/06/11 01:23

Spinner提供了一种便捷的方式从数据集中选择一个值。在默认状态下,Spinner将会展示它当前选中的值。触击Spinner会显示一个包含其他可用值的下拉菜单,从中用户可以选择一个新的值。效果如下图所示:

1  在布局文件中添加Spinner标签

可以使用XML文件中的<Spinner>为你的布局添加Spinner对象,如下所示:

<Spinnerandroid:id="@+id/planets_spinner"android:layout_width="fill_parent"android:layout_height="wrap_content"/>

         为了让你的Spinner填充一系列的数值,你需要在Activity/Fragment中指定SpinnerAdapter。

         <Spinner>中还有一些属性,如:

android:entries为可选属性,用于指定列表项,如果在布局文件中不指定该属性,可以在JAVA代码中通过为其指定适配器的方式指定;

android:prompt属性也是可选属性,用于指定列表选择框的标题。

2  使用数据填充Spinner

填充Spinner的值能来自任何资源,但最终都会通过SpinnerAdapter对象。

如果资源能存放在Array中,可以使用ArrayAdapter对象;

如果资源来自数据库的访问,则可使用CursorAdapter对象。

这里有一个例子,如果你的资源集在事前就决定好了,你可以使用String类型的resource file文件来提供适配。

●在XML中创建String数组;

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="planets_array">        <item>Mercury</item>        <item>Venus</item>        <item>Earth</item>        <item>Mars</item>        <item>Jupiter</item>        <item>Saturn</item>        <item>Uranus</item>        <item>Neptune</item>    </string-array></resources>

resource中使用了<string-array>标签来存放资源。

●在代码中,创建数据并设置ArrayAdapter;

Spinner spinner = (Spinner) findViewById(R.id.spinner);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);

●方法详解;

可以看到,调用createFromResource,使用资源文件来创建ArrayAdapter。createFromResource允许开发者用String数组来创建ArrayAdapter,具体如下所示:

ArrayAdapter<CharSequence> createFromResource (Context context,
               int textArrayResId , int textViewResId)

第一个参数,即app的环境;第二个参数为数据资源的id;第三个参数是Spinner中每个项目的布局文件的id。此例中指定的simple_spinner_item是Android内置的资源。

         setDropDownViewResource用于指定dropdown menu外观样式。其中,simple_spinner_dropdown_item也是Android内置的资源。

         最后,调用setAdapter来设置适配器。

●在Java代码中使用数组创建ArrayAdapter;

        当然,也可在Java代码中,创建数组并使用数组创建适配器。

ArrayAdapter  adapter = new ArrayAdapter<String>( this ,android.R.layout.simple_spinner_item , m);

看一下ArrayAdapter的构造函数,如下:

ArrayAdapter (Context context,int resource,List<T> objects)

第一个参数为应用的环境;第二个参数为下拉菜单每项的View;第三个参数即数据值集合。

3  响应用户选择

当用户从下拉菜单中选择一个条目时,Spinner对象将接收一个on-item-selected事件。

         需要实现AdapterView.OnItemSelectedListener接口和相关的onItemSelected回调方法来定义一个选择事件的handler。

         有如下的实例。

         ●实现了OnItemSelectedListener接口的类;

public class SpinnerActivity extends Activity implements OnItemSelectedListener {... public void onItemSelected(AdapterView<?> parent, View view , int pos, long id) {// An item was selected. You can retrieve the selected item using// parent.getItemAtPosition(pos)}public void onNothingSelected(AdapterView<?> parent) {        // Another interface callback}}

●在Java中为Spinner对象设置事件监听器;

Spinner spinner = (Spinner) findViewById(R.id.spinner);spinner.setOnItemSelectedListener(this);







原创粉丝点击