Android笔记3——Android的用户界面2

本文详细介绍了AdapterView类,它是Android界面的重要组成部分,包括AdapterView的继承结构和作用,以及其子类如ListView、GridView、ExpandableListView等的特性。Adapter是用来为AdapterView提供数据的,常见实现包括ArrayAdapter、SimpleAdapter等。文中还列举了实现ListView的四种方式,并讲解了如何自定义Adapter。最后,讨论了Spinner、Gallery、AdapterViewFlipper和StackView的使用。
摘要由CSDN通过智能技术生成

这节单独讲AdpaterView类及其子类。

1、AdapterView类继承结构

AdapterView,顾名思义,就是Adapter的View。什么是Adapter呢?我的理解,Adapter就是适配器,

就是将数据保证起来以适配其他类。

对于AdapterView,我们要牢记以下几点:

1、AdapterView继承自ViewGroup,它的本质是容器

2、AdapterView一般包含多个列表项,并将多个列表项以合适的形式呈现出来。

3、AdapterView的每个列表项其实就是Adapter里的一条数据。调用AdapterView类的setAdapter方法

设置Adapter即可。

AdapterView类的继承关系图如下图所示


<图片:AdapterView类的继承关系图>

AdapterView类本身是抽象类,它的三个子类也是抽象类。代表三种风格的列表形式。


2、Adapter类继承结构

Adapter类用来给AdapterView类提供数据,它和各种View类是密切相关的,在分别讲各种具体的AdapterView类之前,

先看一下Adapter类的继承关系


<图片:Adapter类的继承关系>

可以看到,几乎所有的Adapter具体子类都继承自BaseAdapter,BaseAdapter同时实现了ListAdapter和SpinnerAdapter,

可以为AbsListView和AbsSpinnerView提供数据。

常用的实现类有

ArrayAdapter,通常用于将数组和List集合的多个值包装成列表项

SimpleAdapter,通常用于将List集合的多个列表项包装成列表项。注意对象两个字

SimpleCursorAdapter,与SimpleAdapter基本相似,只是用于包装Cursor提供的数据。Cursor字面意思是光标,在Android中

一般引申为数据库中的一行数据。

除了使用上面几个具体类,一般也经常会直接扩展BaseAdapter,通过实现几个方法,可以定义出自己的Adapter类,也很方便。


3、实现ListView的4种方式

第一种,用ArrayAdapter封装数据。ArrayAdapter需要三个参数,

Context:代表当前的Anroid应用

textViewResourceId: 一个资源ID,一般是Layout目录下的一个xml文件,文件里定义了一个TextView组件,代表了列表每一项

的显示外观。也可以使用Android预先定义好的外观,比如传入android.R.layout.simple_list_item_multiple_choice,这样就不用

再去定义一个xml文件了。

第三个参数,数组或List:代表了具体的数据,每个数据对应列表中的一项


第二种,用SimpleAdapter封装数据。和ArrayAdapter类似,不过SimpleAdapter更加强大。

因为ArrayAdapter每个列表项只能是TextView,而SimpleAdapter可以让每一项都包含多种资源。因此它更加复杂,需要5个参数

Context::代表当前Android应用

第二个参数是一个List,而List的每一项都是一个Map<String,?>,即以String为key的一张表。

第三个参数,指定一个界面布局ID,代表每一项数据的显示外观

第四个参数,String[],用于提取第二个参数中每一个Map中的值

第五个参数,int[],用于指定第三个参数中界面布局里哪些ID资源要被填充。


第三种,Activity继承ListActivity,这样的话Acitvity中就无需调用setContentView来设置一个布局文件。相当于它的布局文件中只有一个

ListView。实际上也可以用setContentView来指定一个布局文件,用于替换默认风格。但是注意布局文件中应该包含一个id为

"@+id/android:list"的ListView。

之后同样地,使用ArrrayAdapter封装数据就OK了。


第四种,既不用ArrayAdapter也不用SimpleAdapter,而是自己从BaseAdapter继承一个新的Adapter类,并传给setAdapter。

只需要重写getCount,getItem,getItemId和getView这四个方法就可以了。


4、一些具体的AdapterView类


4.1 ListView

最普遍使用的是ListView,它的用法很简单,基本就是从上往下排列的很多数据项。

前面介绍的添加Adapter的四种方式的时候也涉及到ListView了,不再多讲


4.2 GridView

GridView和ListView最大的区别就是GridView可以是多列的,所以使用GridView最重要的就是android:numColumns属性

其他的属性就是设置拉伸啊之类的,可以用到的时候再看。其余用法比如设置Adpater与ListView是一样的


4.3 ExpandableListView

ExpandableListView就是每项都能展开的ListView,它的外观像这个样子


类似很多聊天软件的好友分组。

很其他组件一样,在布局文件中用起来很简单,就是放一个ExpandableListView组件,设置一下外观属性就OK了。

关键是怎么给它添加Adapter。它的Adapter不能用前面讲的从BaseAdpater继承下来的那些,

而是从BaseExpandableListAdapter继承出来的,继承关系如下


与ListView类似,给ExpandableListView添加Adapter也有以下几种方式

a. 扩展BaseExpandableListAdpater

b. 使用SimpleExpandbleListAdapter将两个List集合包装成ExpandableListAdapter

c. 使用SimpleCursorTreeAdapter将Cursor中的数据包装成SimpleCursorTreeAdapter

扩展BaseExpandableListAdapter最重要的其实就是实现如下4个方法:

getGroupCount():该方法返回包含的组列表项的数量

getGroupView():该方法返回View对象作为组列表项

getChildrenCount():该方法返回特定组所包含的子列表项的数量

getChildView():该方法返回的View对象将作为特定组、特定位置的子列表项


4.4 Spinner

Spinner就是外观类似于这样的东西


指定Adapter也很简单,和ListView类似


4.5 Gallery

Gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件。

外观如下


也没啥特别的,准备好数据项,给它设置Adapter就可以了。


4.6 AdapterViewFlipper

AdapterViewFlipper继承了AdapterViewAnimator,它也会显示Adapter提供的多个View组件。

但它每次只能显示一个View组件,程序可以通过showPrevious()和showNext()方法控制该组件显示上一个和下一个组件。

用起来很简单,给它添加Adapter就好了


4.7 StackView

StackView也是AdapterViewAnimator的子类。它也用于显示Adapter提供的系列View。

不过它会以“堆叠”的方式来显示多个列表项


用法和AdapterViewFlipper一样,设置Adapter然后showPrevious和showNext就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值