- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
安卓平台下通用适配器类设计和实现
安卓平台下通用适配器类设计和实现
摘 要:介绍了安卓平台下Adapter(适配器)组件的机制和一般使用方法,详述了如何通过面向对象的编程方法实现一种可复用的、通用的Adapter类。该Adapter类的实现过程主要运用了泛型、抽象类、公用代码的抽取和封装等多种技术,使用SparseArray类实现了列表视图组件的存储,重构了一个通用的可扩展的ViewHolder类,在Adapter类的getView方法中提供了一个用于数据填充的可配置convert的抽象方法。使用Adapter类明显提高了程序开发效率,增强了系统的可扩展性和可维护性。
关键词:安卓;适配器;SparseArray类;ViewHolder类
DOIDOI:10.11907/rjdk.1511223
中图分类号:TP319
文献标识码:A 文章编号文章编号:1672-7800(2015)012-0109-05
0 引言
Android系统是完全遵循MVC模式设计的框架,其中Activity是Controller,Layout是View,因为Layout五花八门,很多数据不能直接绑定上去,所以Android引入了Adapter(适配器)机制作为复杂数据展示的转换载体。
Adapter可以认为是View与Data之间的桥梁,是连接后端数据和前端显示的适配器接口,用来处理数据并将数据绑定到View上,在使用常见的View(如ListView、GridView)编程时都需要用到Adapter。图1较为直观地表达了Data、Adapter、View三者的关系:数据源首先封装到Adapter中,再由Adapter将数据映射到ListView上显示,当用户对ListView组件操作时会通过Adapter更新数据并返回显示结果。
Android提供多种适配器类,比如BaseAdapter、ArrayAdapter、SimpleAdapter、CursorAdapter等,开发时可以根据不同数据源选用适配器类,也可以通过继承的方式自定义适配器类。其中,BaseAdapter是一个抽象类,具有较高的灵活性,一般在实际项目开发中用得比较多,因此,本文围绕BaseAdapter进行阐述。
BaseAdapter使用步骤:①在需要显示View的Activity中自定义一个内部类MyAdapter,继承于BaseAdapter,实现其中的抽象方法,一般还需要重写构造方法以方便传递数据;②在Activity中实例化MyAdapter对象并传递数据,数据可以是List集合或数组;③使用View的
图1 适配器接口(Adapter)工作机制
setAdatper(adapter)方法关联MyAdapter对象,绑定数据;④在用户添加或修改数据时使用notifydatasetchanged方法更新数据。
以上使用BaseAdapter的编程方式存在一定弊端,即界面每次显示一个不同的View都要定义一个新的MyAdapter类,代码无法复用。这种编程方式在开发简单应用时问题不大,但在开发较复杂的应用时会造成大量重复性代码,使系统的可扩展性和可维护性大大降低,严重影响开发效率。本文通过一个典型案例,介绍如何设计并实现一种通用的Adapter类,以解决上述问题。
1 Adapter一般使用方法
下面是一个手机通讯录案例,相对于实际项目在功能上作了很大程度的简化,仅由一个界面构成,界面上只显示联系人的姓名文本和头像图片,通讯录的内容为100条简单数据,头像图片都是同一张本地图片,关键代码如下:
(1)创建布局文件。通讯录布局文件:activity_main.xml,包含一个ListView组件,id属性为listview。
通讯录列表子项布局文件:listview_item.xml,包含一个ImageView组件,id属性为face,一个TextView组件,id属性为name。
(2)创建联系人实体类。AddressBook.class
public class AddressBook {
private UUID id;// 联系人编号
private String name;// 联系人姓名
private String phoneNumber;// 电话号码
private String faceName;// 头像名字
…
}
(3)创建数据提供者类。DataProvider.class
public class DataProvider {
public static final int count=100;//联系人数目
您可能关注的文档
- 学校体育活动和学生心理发展相关性研究.doc
- 学校体育群体活动新途径探索和实践――小学.doc
- 学校体育课程设置和实践研究.doc
- 学校使命和使命管理.doc
- 学校信息中心网络安全问题和防范优化探讨.doc
- 学校信息技术和学科教学整合研究.doc
- 学校信息技术网络建设和资源管理.doc
- 学校健康教育现状和对策研究.doc
- 学校内涵发展挑战和策略.doc
- 学校发展和管理略谈.doc
- 粤人版初中地理七上第四章第1节《天气和天气预报》优质课件 (共28张PPT).pptx
- 2024年白城市直机关遴选公务员笔试真题汇编附答案解析.docx
- 2023年西宁市直属机关遴选公务员笔试真题汇编带答案解析.docx
- 第二部分 高考八大高频考点例析.ppt
- 第七节 对数与对数函数.ppt
- 2025年乐山市直属机关遴选公务员笔试真题汇编附答案解析(夺冠).docx
- 2023年遂宁市直机关遴选公务员笔试真题汇编带答案解析.docx
- 2025四川南充市公路管理局南充市水务局遴选3人笔试备考题库附答案解析(夺冠).docx
- 2025年乐山市直属机关遴选公务员笔试真题汇编附答案解析 (2).docx
- 第十六章2动量和动量定理.ppt
原创力文档


文档评论(0)