ListView详解

什么是ListView
ListView就是一个能数据集合以动态滚动的方式展示到用户界面上的View
ListView适配器模式
在这里插入图片描述
我们经常使用适配器就是继承BaseAdapter去实现一些东西但是有没有想过适配器究竟是什么?
像这张图一样适配器就是我们的网络数据源和listview控件之间的一个桥梁

在继承BaseAdapter的时候我们会重写一些方法在源码里封装好的
在这里插入图片描述
当我们调用setAdapter设置适配器的时候
最先执行getCount方法返回listView要展示数据的长度
根据长度会调用getView有多少个数据就会调用多少次getView进行绘制
这里有朋友会有疑问我们在滑动listView的时候加载成百上千次数据会不会造成OOM内存溢出呢?今天就来给大家解答介绍一下我们的ReclerBin机制.
先看一看ReclerBin的原码
在这里插入图片描述
第一个叫mActiveViews的数组意思就是存储我们listView正在显示的view
第二个mScraoViews其实是一个二维数组它是存储listView已经划出屏幕的所有view
第三个是mCurrentScrap它存储的是还存在和划出去的两种类型

在这里插入图片描述
ListView优化
convertview复用/viewHolder
在这里插入图片描述
三级缓存/监听滑动事件
尽量避免绘制半透明的view

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值