第30页
(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,