每日总结之Adapter的缓存机制

来源:互联网 发布:photozoom pro mac 编辑:程序博客网 时间:2024/05/29 16:10

Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面的额时候,都会调用Adapter的getView()这个方法返回一个View。这样,ListView中有多少项,就应该调用多少次getView()方法去绘制每一项的界面。如果项数少的时候(几十行),这是没问题的。但是如果有一万行,一百万行,那么就会出现问题了,它会占用系统极大的内存,所以必须采用性能优化的方法。


  

ListView中每个item都是通过getView返回并显示的,假如item有很多个,那么重复创建这么多对象来显示显然是不合理。因此,Android提供了Recycler,将没有正在显示的item放进RecycleBin,然后在显示新视图时从RecycleBin中复用这个View。

 

Recycler的工作原理大致如下:

假设屏幕最多能看到11个item,那么当第1个item滚出屏幕,这个item的View进入RecycleBin中,第12个要出现前,通过getView从回收站(RecycleBin)中重用这个View,然后设置数据,而不必重新创建一个View。




第一次加载的时候是一个桌面的的items的数目+1,最上面那一条convertView会加载2次。当convertView为空的时候,也就是第一次绘制的时候,那一条缓存还没有加载出来。所以adapter里面都会有判断,当convertView不为空的时候,

最好在时候新建viewholeder模板,在后加载模板。让加载的item8能成加载出来而不是加载成item7了

0 0
原创粉丝点击