列表视图(ListView)和ListActivity

时间:2024-12-10 23:05:07

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)和ListActivity

使用数组创建ListView十分简单,当这种ListView能定制的内容很少,甚至连每一个列表项的字号大小、颜色都不能改变。

如果想对ListView的外观、行为进行定制,就需要把ListView作为AdapterView使用,通过Adapter控制每个列表项的外观和行为。