Android ViewHolder如何优化适配器?

Android ViewHolder如何优化适配器?,android,Android,我已经见过很多次了,定制适配器通常拥有一个内部静态类ViewHolder,谷歌的演示(packagecom.example.android.api.view列表14) 有人告诉我,这种方法可以优化代码效率 请告诉我为什么ViewHolder可以优化代码。ViewHolder模式将每个视图存储在标记对象内。这样可以避免每次调用getView时都调用findViewById,但如果convertView不为null,只需检索标记即可 编辑: 正如@jqpubliq正确指出的那样 避免findView

我已经见过很多次了,定制适配器通常拥有一个内部静态类
ViewHolder
,谷歌的演示(package
com.example.android.api.view
列表14

有人告诉我,这种方法可以优化代码效率


请告诉我为什么
ViewHolder
可以优化代码。
ViewHolder
模式将每个视图存储在标记对象内。这样可以避免每次调用getView时都调用
findViewById
,但如果convertView不为null,只需检索标记即可

编辑:

正如@jqpubliq正确指出的那样

避免findViewById的一个主要原因是它需要遍历 在找到之前调用它的视图组的子视图 具有所提供id的视图。这意味着此调用将逐步进行 成本越高,视图就越复杂


作为补充,避免使用findViewById的一个主要原因是,它会遍历调用它的视图组的子视图,直到找到具有提供id的视图。这意味着,视图越复杂,调用的成本就越高