ListView控件以及常用数据适配器Adapter的使用+商品展示案例

本文详细介绍了Android中的ListView控件及其常用数据适配器Adapter的使用,包括BaseAdapter、SimpleAdapter和ArrayAdapter。通过一个商品展示案例,演示了如何创建ListView布局、设置Adapter、操作数据库、实现数据与界面交互,展示了ListView在实际开发中的应用。

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

这次我们来介绍一下ListView控件以及常用数据适配器Adapter的使用,并通过一个商品展示案例来说明。

一.ListView控件

在Android开发中ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。接下来介绍一下ListView的常见属性。

ListView常见属性:
1.android:cacheColorHint——设置拖动的背景色
2.android:divider——设置分隔线
3.android:dividerHeight——设置分隔线的高度
4.android:listSelector——设置ListView item选中时的颜色
5.android:scrollbars——设置ListView的滚动条
6.android:dadeScrollbars——设置为true就可以实现滚动条的自动隐藏和显示

ListView是一个列表视图,由很多Item(条目)组成,每个Item的布局都是一样的。需要注意的是,在布局文件中需要指定ListView的id。同时,如果不对ListView进行数据适配,那么就无法在界面上看到布局文件中创建的ListView。

二.Adapter

上面提到在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。可以将适配器理解为界面数据绑定。接下来介绍几种常用的Adapter。

1.BaseAdapter

BaseApdater顾名思义即基本的适配器。它实际上就是一个抽象类。在Android开发中,就是根据这几个抽象方法来对ListView进行数据适配的。BaseAdapter的四个抽象方法的功能如下所示:

public int getCount()--------得到Item的总数
public Object getItem(int position)--------根据position得到某个Item的对象
public long getItemId(int position)--------根据position得到某个Item的id
public View getView(int position,View convertView,ViewGroup parent)--------得到相应的Item视图,position当前Item的位置,convertView复用的View对象

这四个抽象方法分别用于设置Item的总数、获取Item对象、获取Item id、得到Item视图。开发者在适配数据到ListView时,需要创建一个类集成BaseAdapter并重写这四个抽象方法。

2.SimpleAdapter

SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法。分别是getCount()、getItem()、getItemId()、getView()方法。因此,开发者只需要在创建SimpleAdapter实例时,在构造方法里传入相应的参数即可。SimpleAdapter的构造方法如下:

    public SimpleAdapter(Context context,List<? extends Map<String,?>>data,int resource,String[] from,int[] to);

上述构造方法中有多个参数:
a. Context context:Context对象,getView()方法中更需要用到Context将布局转换成View对象。
b. int resource:Item布局的资源id。
c. String[] from:Map集合里面的key。
d.int[] to:Item布局对应的控件id。

需要注意的是,SimpleAdapter只能适配Checkable、TextView、ImageView,其中Checkable是一个接口,CheckBox控件就实现了该接口。TextView适用于显示文本的控件,ImageView是用来显示图片的控件。int[] to所代表的控件不是这三中类型则会报IllegalStateException。

3.ArrayAdapter
ArrayAdapter也是BaseAdapter的子类,与SimpleAdapter相同,ArrayAdapter也不是抽象类,并且用法与SimpleAdapter类似,开发者只需要在构造方法里传入相应参数即可适配数据。ArrayAdapter通常用于适配TextView控件,例如Android系统中的Setting(设置菜单)。
ArrayAdapter的构造方法如下:

    public ArrayAdapter(Context context,int resourse,inttextViewResourceId,T[]objects);

上述构造方法同样有多个参数:
a. Context context:Context对象。
b. int resource:Item布局的资源id。
c. int textViewResourceId:Item布局相应的控件TextView的id。
d. T[] objects:需要适配的数据数组。


OK,接下来我们通过一个案例来了解ListView控件以及Adapter的使用。

下面为详细步骤及代码:

1.新建一个程序,设计用户交互界面。

这里写图片描述

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_margin="8dp"
    tools:context="com.example.productshow.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/addLL"
        android:orientation="horizontal">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/nameET"
            android:hint="商品名称"
            android:inputType="textPersonName"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/balanceET"
            android:hint="金额"
            android:inputType="number"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/addIV"
            android:onClick="add"
            android:src="@android:drawable/ic_input_add"
            />
    </LinearLayout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值