Android移动开发—Listview列表视图的使用讲解及SimpleAdapter实例

本文详细讲解了Android中的ListView及其相关适配器的使用,包括ListAdapter、SpinnerAdapter、BaseAdapter、ArrayAdapter和SimpleAdapter。重点讨论了SimpleAdapter的构造方法和实例应用,展示了如何在XML中定义ListView和视图组件结构,以及如何在主应用类中创建并填充数据。
摘要由CSDN通过智能技术生成

Listview列表视图的使用讲解

Listview定义

Listview在Android developers开发手册中的定义为:

Displays a vertically-scrollable collection of views, where each view is positioned immediatelybelow the previous view in the list.A list view is an adapter view that does not know the details, such as typeand contents, of the views it contains. Instead list view requestsviews on demand from a ListAdapter as needed, such as to display newviews as the user scrolls up or down.

翻译成中文则为:

显示垂直可滚动的视图集合,其中每个视图都位于列表中上一个视图的紧下方。列表视图是一个适配器视图,它不知道其包含的视图的详细信息,例如类型和内容。相反,列表视图根据需要从中请求视图ListAdapter,例如在用户向上或向下滚动时显示新视图。

通俗理解为当需要开发在一个视图页面中展示多个结构相同的组件时,可以使用listview列表视图要解决问题。

ListAdapter

ListAdapter可以作为AbsListView的数据源,AbsListView的子类有ListView、GridView和ExpandableListView。
ListAdapter相比Adapter新增了areAllItemsEnabled和isEnabled两个方法。

SpinnerAdapter

SpinnerAdapter可以作为AbsSpinner的数据源,AbsSpinner的子类有Gallery,
Spinner和AppCompatSpinner。
相比Adapter,SpinnerAdapter中新增了getDropDownView方法,该方法与Adapter接口中定义的getView方法类似,该方法主要是供AbsSpinner调用,用于生成Spinner下拉弹出区域的UI。在SpinnerAdapter的子类BaseAdapter中,getDropDownView方法默认直接调用了getView方法。
ArrayAdapter和SimpleAdapter都重写了getDropDownView方法,这两个类中的getDropDownView方法与其getView的方法都调用了createViewFromResource方法,所以这两个类中方法getView与方法getDropDownView代码基本一致。
CursorAdapter也重写了getView与getDropDownView方法,虽然这两个方法没有使用公共代码,但是这两个方法代码逻辑一致。
综上,我们可知当我们在覆写getDropDownView方法时,应该尽量使其与getView的代码逻辑一致。

BaseAdapter

BaseAdapter主要实现了以下功能:

  • BaseAdapter实现了观察者模式,Adapter接口定义了方法registerDataSetObserver和unregisterDataSetObserver,BaseAdapter中维护了一个DataSetObservable类型的变量mDataSetObservable,并实现了方法registerDataSetObserver和unregisterDataSetObserver。
  • BaseAdapter重写了getDropDownView方法,其调用了getView方法,如下所示:
public View getDropDownView(int position, View convertView, ViewGroup parent) {
   
    return getView(position, convertView, parent);
}
  • 覆写其他一些方法,设置了默认值,比如覆写hasStableIds方法,使其默认返回false

ArrayAdapter

  • ArrayAdapter的构造函数既可以接收List作为数据源,又可以接收一个数组作为数据源,如果传入的是一个数组,那么在构造函数中也会通过Arrays.asList()将数组转换成list,最终用mObjects存储该list。

SimpleAdapter

构造方法:
在这里插入图片描述
参数解析:
在官方手册中:
在这里插入图片描述
讲解:
context是要运行simpleadapter关联的view正在运行的上下文
data为类型为map的list类型的数据
resource为listview组件所在的layout页面的id
from为map中的key组成的数组
to为每一个列表视图所有组件的id组成的数组
公共方法

public int getCount ()//表示的数据集中有多少个项目。
public View getDropDownView (int position, 
                View convertView, 
                ViewGroup parent)//获取一个View,它在下拉弹出窗口中显示数据集中指定位置的数据。
public Resources.Theme getDropDownViewTheme ()//返回先前通过调用设置的值 
public Filter getFilter ()//返回一个过滤器,该过滤器可用于使用过滤模式约束数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值