注:本文摘自《疯狂Android讲义》
AdapterView类及其子类
AdapterView及其子类的继承关系类图,如图所示:
图1. AdapterView及其子类的继承关系类图
AdapterView具有以下特征:
-
AdapterView继承了ViewGroup,它的本质是容器;
-
AdapterView可以包括多个“列表项”,并将多个“列表项”以合适的形式显示出来;
-
AdapterView显示的多个“列表项”由Adapter提供。调用AdapterView的setAdapter(Adapter)方法可以设置Adapter.
列表视图(ListView)和ListActivity
ListView以垂直列表的形式显示所有列表项.
创建ListView有如下两种方式:
-
直接使用ListView进行创建;
-
让Activity继承ListActivity。
由于ListView继承自AdapterView,为了让Adapter显示列表项需要调用setAdapter(Adapter)方法为之提供Adapter,并有Adapter提供列表项即可。
下面以一个小例子来展示ListView的用法:
代码1:main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="<a target=_blank href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/fruit"
android:divider="#f00"
android:dividerHeight="2px"
android:headerDividersEnabled="false" />
</LinearLayout>
上面的界面布局定义了一个ListVIew,并通过android:entries指定了要显示的列表项数组,还可以通过android:divider改变列表项之间的分隔条。定义的数组资源如下所示:
代码2:arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="fruit">
<item >苹果</item>
<item >橘子</item>
<item >香蕉</item>
<item >西瓜</item>
<item >葡萄</item>
<item >桃子</item>
</string-array>
</resources>
实际效果图如下图所示: