野人学Android基础篇之初探UI控件第六课--ListView和他的adapter们(一)

本文探讨Android中ListView的基本原理,它是一个显示数据的列表控件。通过适配器Adapter,复杂数据可以转化为ListView可读的形式。核心知识点包括:1. 数据通常以集合(list和map)形式存在;2. BaseAdapter是Adapter的基础,ArrayAdapter和SimpleAdapter是常见实现,也可自定义扩展;3. ListView作为控件,既可使用系统默认,也可自定义实现。
摘要由CSDN通过智能技术生成

ListView原理

ListView是什么控件呢?有图有真相,来看一下。


如图所示,ListView就是将数据以行的形式展示出来。ok,来分析一下,要实现ListView,肯定需要数据,然后需要ListView控件。上图只展示了最简单的ListView,在开发中会遇到更加复杂的数据,而ListView是比较固定的,要想在ListView上展示复杂的数据,此时就需要一个适配器来将复杂的数据转化成ListView能读懂的形式。原理图如下:


原理图很形象地说明了Data、Adapter和ListView三者的关系,Data和ListView无法直接连接,需要Adapter在两者之间做连接,这就是适配器。要想进行ListView的开发,需要提前了解以下知识点:

1.Data的形式基本上是集合(如若不懂,请点击http://blog.csdn.net/qingxinyeren/article/details/48088997恶补),一般会用到list和map;

2.Adapter的基础类是BaseAdapter,Android已经为大家提供了ArrayAdapter(纯文字适配器)和SimpleAdapter(图文并茂适配器)两种适配器,要是觉得这两个适配器不够用,也可以继承BaseAdapter进行自定义开发;

3.ListView只是一个控件,可以用系统自带的,当然也可以自定义。




尝试着写web下的listview控件listview一般有四种显示模式——平铺、图标、列表和详细信息。这些显示模式唯一的共同点就是数据是相同的,显示效果完全不一样。这时候xml的优势就完全体现出来了。 第一步,就是建立一个自定义格式的xml,用来保存listview数据 第二步,xsl可以解析xml生成html,所以就针对listview的每一种显示效果设计了一个对应的xsl。这样前面定义的xml数据和不同的xsl一起就可以显示出不同的效果。 第三步,htc在开发web控件时,非常灵活和功能强大,可以采用客户端脚本如js,可以对控件进行封装,使之有自己的属性、方法和事件等。利用htc封装的listview控件中对外有两个属性CfgXMLSrc(配置文件,设置listview的每一种显示模式对应的xsl文件路径等信息)和View(listview的显示模式),在htc中根据listview的View属性来选择不同的xsl文件和xml数据文件生成html,并输出。 这样就可以通过改变listview控件的view属性来切换listview的不同显示效果。 在线演示 打包下载 以前写换皮肤的控件,都是通过更换css和图片路径来做的(可以看看http://www.stedy.com),局限性很大,例如toolbar,在winxp和win2000下差别很大,只靠通过换css和图片路径无法应付这种情况。通过开发listview的经验,从中悟到了一种更好的开发换皮肤的web控件的模式: 首先将控件的相关数据用xml描述出来,对于每一种Theme(皮肤/主题样式),有一个相关的配置文件,配置文件中记载了该控件所用到的xsl、css、图片路径、htc等信息。在控件相关的htc中,根据Theme属性组合这些。从而可以灵活的应付各种情况。 例如刚才说的toolbar,假如入我们有三种风格:winxp蓝色、winxp银色和windows经典,前面两种基本差不多,只是样式和图片不一样,而后面一种和前面的两种差别比较大。那么我们需要写两个xsl,三个css文件,三个图片文件夹,组合一下就可以生成这三种风格的toolbar了。 这种控件开发模式会慢慢流行起来并在asp.net控件中发挥重要作用的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值