第29页
spinner.getSelectedItem();
添加列表选择框后,如果需要在用户选择不同的列表项后,执行相应的处理,则可以为该列表选择框添加OnItemSelectedListener事件监听器。例如,为spinner添加选择列表项事件监听器,并在onItemSelected()方法中获取选择项的值输出到日志中,可以使用下面的代码:
//为选择列表框添加OnItemSelectedListener事件监听器
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View arg1,
int pos, long id) {
String result = parent.getItemAtPosition(pos).toString(); //获取选择项的值
Log.i("Spinner示例", result);
}
@Override
public void onNothingSelected(AdapterView> arg0) {
}
});
在使用列表选择框时,如果不在布局文件中直接为其指定要显示的列表项,也可以通过为其指定适配器的方式指定。下面以例3.17为例介绍通过指定适配器的方式指定列表项的方法。
为列表选择框指定适配器,通常分为以下3个步骤实现。
(1)创建一个适配器对象,通常使用ArrayAdapter类。在Android中,创建适配器通常可以使用以下两种方法:一种是通过数组资源文件创建;另一种是通过在Java文件中使用字符串数组创建。
[√]通过数组资源文件创建
通过数组资源文件创建适配器,需要使用ArrayAdapter类的createFromResource()方法,具体代码如下:
ArrayAdapter adapter = ArrayAdapter.createFromResource(
this, R.array.ctype,android.R.layout.simple_dropdown_item_1line); //创建一个适配器
[√]通过在Java文件中使用字符串数组创建
通过在Java文件中使用字符串数组创建适配器,首先需要创建一个一维的字符串数组,用于保存要显示的列表项,然后使用ArrayAdapter类的构造方法ArrayAdapter(Context context, int textViewResourceId, T[] objects)实例化一个ArrayAdapter类的实例,具体代码如下:
String[] ctype=new String[]{"身份证","学生证","军人证"};
ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_spinner_item,ctype);
(2)为适配器设置列表框下拉时的选项样式,具体代码如下:
//为适配器设置列表框下拉时的选项样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
(3)将适配器与选择列表框关联,具体代码如下:
spinner.setAdapter(adapter); //将适配器与选择列表框关联
3.3.6 列表视图
列表视图(ListView)是Android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项。例如,显示系统设置项或功能内容列表等。在Android中,可以使用两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建;另一种是让Activity继承ListActivity实现。下面分别进行介绍。
1. 直接使用ListView组件创建
直接使用ListView组件创建列表视图,也可以有两种方式:一种是通过在XML布局文件中使用标记添加;另一种是在Java文件中,通过new关键字创建。推荐采用第一种方法,也就是通过在XML布局文件中添加ListView,其基本语法格式如下:
属性列表
>
ListView支持的常用XML属性如表3.7所示。
表3.7 ListView支持的XML属性
XML属性 描 述
android:divider 用于为列表视图设置分隔条,既可以用颜色分隔,也可以用Drawable资源分隔
android:dividerHeight 用于设置分隔条的高度
android:entries 用于通过数组资源为ListView指定列表项
android:footerDividersEnabled 用于设置是否在footer View之前绘制分隔条,默认值为true,设置为false时,表示不绘制。使用该属性时,需要通过ListView组件提供的addFooterView()方法为ListView设置footer View
android:headerDividersEnabled 用于设置是否在header View之后绘制分隔条,默认值为true,设置为false时,表示不绘制。使用该属性时,需要通过ListView组件提供的addHeaderView()方法为ListView设置header View
例3.18 在布局文件中添加一个列表视图,并通过数组资源为其设置列表项。
具体代码如下:
android:entries="@array/ctype"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
在上面的代码中,使用了名称为ctype的数组资源,因此,需要在res\values目录中创建一个定义数组资源的XML文件arrays.xml,并在该文件中添加名称为ctype的字符串数组,关键代码如下:
- 情景模式
…
- 连接功能
运行上面的代码,将显示如图3.25所示的列表视图。
图3.25 在布局文件中添加的列表视图
在使用列表视图时,重要的是如何设置选项内容。同Spinner列表选择框一样,如果没有在布局文件中为ListView指定要显示的列表项,也可以通过为其设置Adapter来指定需要显示的列表项。通过Adapter来为ListView指定要显示的列表项,可以分为以下两个步骤。