乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第29页

书籍名:《Android从入门到精通》    作者:明日科技




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指定要显示的列表项,可以分为以下两个步骤。