Android UI组件--ListView(1)

本文介绍了Android中的ListView组件,包括如何在XML中添加ListView,声明并设置ArrayAdapter,以及如何处理点击事件。通过ArrayAdapter展示自定义数据,并利用OnItemClickListener实现列表项的点击反馈。同时,提到了Toast组件用于显示短暂消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListView是一个公共类,是一种View。它展示了一些垂直排列可以滚动的物件,这些物件通过与这个ListView相关联的ListAdapter决定的。

首先现在XML文件中加入一个ListView。

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/ListView"
        android:layout_gravity="center_horizontal" />

然后在程序中声明一个ListView

private ListView lv;
通多id定位找到当前布局中要使用的ListView

lv=(ListView) findViewById(R.id.ListView);


-------------------------------------------------------------------------------------------------------------------------------------------------


ListView的数据项需要由Adapter来配适,Adapter的类型有很多种,其中ArrayAdapter是最基本的一种。ArrayAdapter是一个类,它继承自android.widge.BaseAdapter,它的元素如果是布局文件的话,只能是TextView。

1)声明一个ArrayAdapter

private ArrayAdapter<ListData> adapter;

其中ListData是一个自己写的类,它里面包含了ListView中每一项中包含的数据,比如列表中的每一个元素是一个用户,那么就有用户姓名,性别和年龄。注意要用toString方法规定在列表上呈现的文字。比如这里列表中只显示姓名。

public class ListData {
    public ListData(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private String name="SB";
    private String gender="male";
    private int age=0;

    @Override
    public String toString() {
        return getName();
    }
}

2new一个ArrayAdapter(使用系统默认simple_expandable_list_item_1

adapter=new ArrayAdapter<ListData>(this,android.R.layout.simple_expandable_list_item_1);

3)为一个ListView设置一个Adapter

lv.setAdapter(adapter);

4)在一个ArrayAdapter中设置数据

for (int i=0;i<=19;i++)
        {
            adapter.add(new ListData("SB"+i,"male",i+5));
        }
这里用到了ListData的构造方法。

-------------------------------------------------------------------------------------------------------------------------------------------------

ListView的数据配适完毕以后,用户点击某一个条目时,程序应作出相应的回应,需要用监听器和事件处理器来实现。在ListView中,我们使用的是ListView的 setOnItemClickListner 方法设置监听器和对OnItemClickListner接口的实现来完成事件处理器。

1)设置监听器

lv.setOnItemClickListener(new MyListener());
为lv设置监听器

2)完成事件处理器

class MyListener implements AdapterView.OnItemClickListener
{
    public void onItemClick (AdapterView<?> parent, View view, int position, long id)
    {
        ListData data=adapter.getItem(position);
        Toast.makeText(getApplicationContext(), String.format("name:%s  gender:%s  age:%d",data.getName(),data.getGender(),data.getAge()),Toast.LENGTH_SHORT).show();
    }
}
当点击事件发生时,触发onItemClick方法。

adapter.getItem(position)可以得到点击的元素。

toast是一种比较小的组件,它可以短时间内给用户弹出一点小消息,它的makeText方法的三个参数依次是上下文(一般为this或者getApplicationContext()),显示的内容(可以用format),显示时间。最后把它show()出来


-------------------------------------------------------------------------------------------------------------------------------------------------


相关官方文档的位置:

ListView:

https://developer.android.com/reference/android/widget/ListView.html

ArrayAdapter:

https://developer.android.com/reference/android/widget/ArrayAdapter.html

OnItemClickListener:

https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

T oast:

https://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context, int, int)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值