什么是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