乐读文学

Android从入门到精通

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

第30页

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


(1)创建Adapter对象。对于纯文字的列表项,通常使用ArrayAdapter对象。创建ArrayAdapter对象通常可以有两种方式:一种是通过数组资源文件创建;另一种是通过在Java文件中使用字符串数组创建。这与3.3.5节Spinner列表选择框中介绍的创建ArrayAdapter对象基本相同,所不同的就是在创建该对象时,指定列表项的外观形式。为ListView指定的外观形式通常有以下几个。

[√]simple_list_item_1:每个列表项都是一个普通的文本。



[√]simple_list_item_2:每个列表项都是一个普通的文本(字体略大)。



[√]simple_list_item_checked:每个列表项都有一个已选中的列表项。



[√]simple_list_item_multiple_choice:每个列表项都是带复选框的文本。



[√]simple_list_item_single_choice:每个列表项都是带单选按钮的文本。

(2)将创建的适配器对象与ListView相关联,可以通过ListView对象的setAdapter()方法实现,具体代码如下:

listView.setAdapter(adapter);  //将适配器与ListView关联

下面通过一个具体的实例演示通过适配器指定列表项来创建ListView。

例3.19   在Eclipse中创建Android项目,名称为3.19,实现在屏幕中添加列表视图,并为其设置footer  view和header  view。(实例位置:光盘\TM\sl\3\3.19)

(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件删除,并添加一个ListView组件,添加ListView组件的布局代码如下:




android:divider="@drawable/greendivider"



android:dividerHeight="3px"



android:footerDividersEnabled="false"



android:headerDividersEnabled="false"



android:layout_height="wrap_content"



android:layout_width="match_parent"/>

说明:  在上面的代码中,为ListView组件设置了作为分隔符的图像以及分隔符的高度,另外,还设置了在footer  view之前和header  view之后不绘制分隔符。

(2)在主活动的onCreate()方法中为ListView组件创建并关联适配器。首先获取布局文件中添加的ListView,然后为其添加header  view(需要注意的是,添加header  view的代码必须在关联适配器的代码之前),再创建适配器,并将其与ListView相关联,最后为ListView组件添加footer  view。关键代码如下:

final  ListView  listView=(ListView)findViewById(R.id.listView1);



listView.addHeaderView(line());  //设置header  view



/****************创建用于为ListView指定列表项的适配器********************/



ArrayAdapter  adapter  =  ArrayAdapter.createFromResource(



this,  R.array.ctype,android.R.layout.simple_list_item_checked);  //创建一个适配器



/***************************************************************************/



listView.setAdapter(adapter);  //将适配器与ListView关联



listView.addFooterView(line());  //设置footer  view

(3)为了在单击ListView的各列表项时获取选择项的值,需要为ListView添加OnItemClickListener事件监听器,具体代码如下:

listView.setOnItemClickListener(new  OnItemClickListener()  {



@Override



public  void  onItemClick(AdapterView  parent,  View  arg1,  int  pos,  long  id)  {



String  result  =  parent.getItemAtPosition(pos).toString();  //获取选择项的值



Toast.makeText(MainActivity.this,  result,  Toast.LENGTH_SHORT).show();  //显示提示消息框



}



});

运行本实例,将显示如图3.26所示的运行结果。



图3.26 应用ListView显示带头、脚视图的列表

2.  让Activity继承ListActivity实现

如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity继承ListActivity来实现。继承了ListActivity的类中无须调用setContentView()方法来显示页面,而是可以直接为其设置适配器,从而显示一个列表。下面通过一个实例来说明如何通过继承ListActivity实现列表。

例3.20   在Eclipse中创建Android项目,名称为3.20,通过在Activity中继承ListActivity实现列表。(实例位置:光盘\TM\sl\3\3.20)

(1)将新建项目中的主活动MainActivity修改为继承ListActivity的类,并将默认的设置用户布局的代码删除,然后在onCreate()方法中创建作为列表项的Adapter,并且使用setListAdapter()方法将其添加到列表中,关键代码如下:

public  class  MainActivity  extends  ListActivity  {



@Override



public  void  onCreate(Bundle  savedInstanceState)  {



super.onCreate(savedInstanceState);



/****************创建用于为ListView指定列表项的适配器********************/



String[]  ctype=new  String[]{"情景模式","主题模式","手机","程序管理"};



ArrayAdapter  adapter=new  ArrayAdapter(this,