Android控件ListView(一)

ListView是Android开发中一个重要的组件,用于以垂直列表形式显示列表项。在许多应用中都有应用。他有一下两种方法生成视图列表:

直接在布局文件中使用ListView
让Activity继承ListActivity(相当于改Activity显示的组件为ListView)

ListView的常用XML属性:

android:divider 设置item的分隔条,也可用drawable分隔
android:dividerHeight 设置分隔条的高度
android:entries 指定一个数组资源,ListView显示的资源
android:footerDividersEnabled 控制footer View 之前是否绘制分隔条
android:headerDividersEnabled 控制header View 之后是否绘制分隔条

在布局中直接使用ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:entries="@array/book"
        ></ListView>
</RelativeLayout>

上面的布局文件直接定义了一个ListView,并通过entries为ListView指定了列表数组。

上面的ListView指定了一个数组作为生成ListView的资源,该数组需在values文件夹中定义一个数组,资源文件如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="book">
        <item >java</item>
        <item >oracle</item>
        <item >Android</item>
        <item >jdbc</item>
    </string-array>
</resources>

效果如下:
这里写图片描述
ListView可以直接在xml文件中使用,但灵活性很差,只能显示十分固定的数据,甚至于每个列表项的文字大小、颜色都不能改变。因此一般在Activity代码中使用Adapter的实现类(确切的说是BaseAdapter以及其子类)来为列表项进行配置。也就是使用了MVC原则,使ListView有了良好的扩展性。

几乎所有的Adapter都继承了BaseAdapter,而BaseAdapter同时实现了AbsListView和AbsSpinner接口,因此BaseAdapter及其子类可以同时为AbsListView、AbsSpinner提供列表项。

Adapter的常用实现类如下:

ArrayAdapter:通常用于将数组或集合的多个值包装成多个列表项。
SimpleAdapter:可用于将list集合的多个对象包装成多个列表项。
SimpleCurcorAdapter:与SimplementAdapter类似,只是用于包装Curcor提供的数据。
BaseAdapter:通常用于实现,可实现最大限度的定制列表项。

使用ArrayAdapter创建ListView:
在布局文件中定义ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView 
        android:id="@+id/main_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></ListView>
</RelativeLayout>

接着在代码中对用Adapter对ListView进行配置:

public class MainActivity extends Activity {
    private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.main_lv);

        final String[] book=new String[]{"hh","ddd","ddas"};

        //第二个参数  去指定ListView中每一个列表项的布局方式
        ArrayAdapter<String> adapter = 
                new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1,book);
        //将Adapter加载到相应的ListView上
        lv.setAdapter(adapter);
    }
}

代码中定义了一个ListView用于接收布局文件中的ListView,声明了一个String类型的数组作为每个item显示的数据,接着创建一个ArrayAdapter实例,ArrayAdapter的构造方法需要我们传三个参数:

Context:几乎所有组件的创建都要传的参数。
textViewResourceId:显示每个item的布局,这里传入的是android库里的布局。
数组或List:需要显示的数据的数组或集合。

最后为这个ListView设置Adapter。
效果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值