解析Android ListView工作原理及其缓存机制

本文从ListView的背景、Adapter的作用出发,详细解析了ListView的RecycleBin缓存机制,包括关键变量与方法。接着,探讨了ListView的工作原理,特别是两次onLayout()过程中的数据处理,以及滑动时如何加载更多数据。最后,通过onTouchEvent()分析了ListView的滑动部分工作原理,揭示了ListView高效展示大量数据的秘密。
摘要由CSDN通过智能技术生成

首先,这篇是观我大郭神博客之后的学习总结!!下面链接就是郭大神的对ListView的源码解析。先献上我的膝盖,膜拜~
Android ListView工作原理完全解析,带你从源码的角度彻底理解


ListView…..虐我千百遍啊!!我却还待它如初恋!!!这只磨人的小妖精,天生自带无比强大的洪荒之力,但是如果你控制不住它那颗不羁的心的话,你将会被折磨得不要不要的。
今天,我们就来找出它不安分的内在,来探讨如何安抚那颗不羁的心。


一、ListView的背景及Adapter

  1. ListView的背景
    我们来看一下ListView的继承树:
    ListView的继承结构
    ListView是直接继承于AbsListView,也就是说它老爸是AbsListView。而AbsListView有两个子实现类,一个是ListView,另一个是GridView。所以接触过GridView的同学,应该了解到,ListVIew和GridView两兄弟在很多地方是有很多共同点的,比如它俩都天生自带强大无比的洪荒之力。到这大家就奇怪了,这么屌的力量到底是从何而来?很明显啦,拼的就是爹~

  2. ListView的作用
    ListView只有一项工作,那就是展示数据。它并不关系数据从哪而来,数据到底是什么类型等等,它只负责展示数据。但是,它要是没数据的话也谈不上展示了。所以它有一个好基友,那就是Adapter。ListView需要访问什么数据,都是吩咐Adapter帮忙去访问数据的。两朋友形成了一种良好的工作模式,Adapter只负责提供数据,ListView只负责展示数据。所以要了解ListView那颗浪荡不羁的心,我们也需要了解Adapter,这样才能更好地把控ListView的洪荒之力。

  3. Adapter的作用
    Adapter做的工作,就是帮ListView去适配数据源的,这样ListView就不用烦恼数据的问题了,它就可以专心做好展示的工作。Adapter本身是一个接口,所以它能实现各种各样的子类,子类就通过自己特定的逻辑去完成特定的功能,去适配特定的数据。例如,ArrayAdapter可以用于数组和List类型的数据源适配等等。
    同时,我们继承Adapter的时候,有一个灰常重要的方法需要我们重写,那就是public View getView()方法。一般我们会这样写:

@Override  
public View getView(int position, View convertView, ViewGroup parent) {   
    View view;  
    if (convertView == null) {  
        view = LayoutInflater.from(context).inflate(resourceId, null);  
        ······
    } e
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值