列表视图(ListView)和ListActivity
ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项。
创建ListView有如下两种方式:
- 直接使用ListView进行创建。
- 让Activity继承ListActivity(相当于该Activity显示的组件为ListView)。
一旦在程序中获得了ListView之后,接下来就需要为ListView设置它要显示的列表项了。在这一点上,ListView表显示出AdapterView的特征;通过setAdapter(Adapter)方法为之提供Adapter、并由Adapter提供列表项即可。
提示:ListView、GridView、Gallery等AdapterView都只是容器,而Adapter负责提供每个“列表项”组件,AdapterView则负责采用合适的方式显示这些列表项。
实例:改变分隔条、基于数组的ListView
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 直接使用数组资源给出列表项 --> <!-- 设置使用红色的分割条 --> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/books" android:divider="#f00" android:dividerHeight="2px" android:headerDividersEnabled="false" /> </LinearLayout>
其中数组文件如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="books"> <item >疯狂Java讲义</item> <item >疯狂Ajax讲义</item> <item >疯狂XML讲义</item> <item >疯狂Java讲义</item> <item >疯狂Ajax讲义</item> <item >疯狂XML讲义</item> </string-array> </resources>
上面的布局文件中定义了一个ListView,并通过android:entries指定了列表项数组,该ListView还通过android:divider改变了列表项之间的分隔条。
上面第一个ListView指定了android:entries="@array/books",该属性值用到了数组资源。
使用Activity显示上面的ListView,将可以看到如下图所示的效果。
使用数组创建ListView十分简单,当这种ListView能定制的内容很少,甚至连每一个列表项的字号大小、颜色都不能改变。
如果想对ListView的外观、行为进行定制,就需要把ListView作为AdapterView使用,通过Adapter控制每个列表项的外观和行为。