listview适配器与加载过程详解

简介:

android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容。

Listview由以下三个元素组成:

Ø  View:用来展示列表,通常是一个xml所指定的。

Ø  适配器:把不同的数据映射到view上,不同的数据对应不同的适配器,如ArrayDdapter,CursorAdapter,SimpleAdapter等,他们能偶将数组,指针指向的数据,Map等数据映射到View上。

通过listviiewsetadapter方法可以设置其适配器

 public void setAdapter (ListAdapter adapter)

setAdapter方法的参数是ListAdapter,适配器可以为以下八种类型:

ArrayAdapter<T>, BaseAdapterCursorAdapterSimpleAdapter,  HeaderViewListAdapterResourceCursorAdapterSimpleCursorAdapterWrapperListAdapter 

ArrayAdapter最为简单,只能展示一行字。

SimpleAdapter有最好的扩充性,可以自定义出各种效果。

SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以类表的形式展示出来。

以上三种适配器都继承自BaseAdapter,继承BaseAdapter之后,需要重写以下四个方法:getCount,getItem,getItemId,getView

Ø  数据:具体的将被映射的数据和资源,如字符串,图片,基本组件等,通过适配器,这些数据将会被显示到ListView.所有的数据和资源要显示到ListView上都通过适配器来完成。

ListView绘制的过程:

首先,系统在绘制ListView之前,将会先调用getCount方法来获取Item的个数。之后每绘制一个 Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。也正是在这个过程中完成了适配器的主要转换功能,把数据和资源以开发者想要的效果显示出来。也正是getView的重复调用,使得ListView的使用更 为简单和灵活。这两个方法是自定ListView显示效果中最为重要的,同时只要重写好了就两个方法,ListView就能完全按开发者的要求显示。而 getItemgetItemId方法将会在调用ListView的响应方法的时候被调用到。所以要保证ListView的各个方法有效的话,这两个方 法也得重写。比如:没有完成getItemId方法的功能实现的话,当调用ListViewgetItemIdAtPosition方法时将会得不到想 要的结果,因为该方法就是调用了对应的适配器的getItemId方法。



本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/645467,如需转载请自行联系原作者

相关文章
|
9月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
564 31
|
9月前
|
存储 算法 安全
G1原理—2.G1是如何提升分配对象效率
本文深入探讨了G1垃圾回收器中对象分配的原理与机制,包括TLAB(线程本地分配缓冲)的作用、快速分配与慢速分配的区别及流程。首先分析了G1的对象分配原理,强调了停顿预测模型和无锁化分配的重要性。接着详细解析了TLAB机制,涵盖其大小确定、满时处理以及如何借助指针碰撞法实现高效分配。同时讨论了大对象分配的特点及其与普通对象分配的不同之处。最后,针对慢速分配失败的情况,介绍了G1如何通过FGC(Full GC)进行最终尝试,确保系统在极端情况下的稳定运行。整体内容围绕提升分配效率与减少GC压力展开,为理解G1的工作机制提供了全面视角。
G1原理—2.G1是如何提升分配对象效率
|
存储 关系型数据库 MySQL
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
1617 0
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
|
数据可视化 数据挖掘 项目管理
打破协作壁垒,Excel多人协同编辑工具带来翻天覆地的变化!
在现代办公中,团队协作和信息共享至关重要。Excel的多人协同编辑功能显著提升了工作效率,避免了版本冲突和重复劳动。市场上的Google Sheets、Airtable、板栗看板和Zoho Sheet等工具也提供了类似功能。以其清晰的界面和强大的数据分析能力,特别适合项目管理和进度追踪,帮助团队高效协作,达成目标。
|
XML Java 开发者
论面向方面的编程技术及其应用(AOP)
【11月更文挑战第2天】随着软件系统的规模和复杂度不断增加,传统的面向过程编程和面向对象编程(OOP)在应对横切关注点(如日志记录、事务管理、安全性检查等)时显得力不从心。面向方面的编程(Aspect-Oriented Programming,简称AOP)作为一种新的编程范式,通过将横切关注点与业务逻辑分离,提高了代码的可维护性、可重用性和可读性。本文首先概述了AOP的基本概念和技术原理,然后结合一个实际项目,详细阐述了在项目实践中使用AOP技术开发的具体步骤,最后分析了使用AOP的原因、开发过程中存在的问题及所使用的技术带来的实际应用效果。
301 5
|
安全 Java
什么是枚举?
什么是枚举?
227 2
|
Cloud Native Java 对象存储
揭秘微服务架构之争:Spring Cloud与Netflix OSS巅峰对决,谁将称霸弹性云原生时代?
近年来,微服务架构成为企业应用的主流设计模式。本文对比了两大热门框架Spring Cloud和Netflix OSS,探讨其在构建弹性微服务方面的表现。Spring Cloud依托Spring Boot,提供全面的微服务解决方案,包括服务注册、配置管理和负载均衡等。Netflix OSS则由一系列可独立或组合使用的组件构成,如Eureka、Hystrix等。两者相比,Spring Cloud更易集成且功能完善,而Netflix OSS则需自行整合组件,但灵活性更高。实际上,两者也可结合使用以发挥各自优势。通过对两者的对比分析,希望为企业在微服务架构选型上提供参考。
319 0
|
数据安全/隐私保护
如何使用GPG 给文件签名?
如何使用GPG 给文件签名?
440 0
|
SQL Oracle 关系型数据库
ERStudio操作指南
ERStudio操作指南
1522 0
|
Java 关系型数据库 MySQL
java网上购物系统eclipse定制开发mysql数据库BS模式java编程jdbc
JSP 网上购物系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 系统运行视频 https://www.bilibili.com/video/BV1Yh4y1E7x8/
275 0