能否解释一下 ArrayAdapter
的 getView()
方法。
我看了文档,它有三个参数:
position
: 要查找其视图的项目在适配器数据集中的位置。convertView
: 如果可能的话要重用的旧视图。注意: 使用之前应检查此视图非空并且类型合适。如果无法将此视图转换为显示正确数据,则此方法可以创建新视图。
异构列表可以指定其视图类型的数量,以便此视图始终为正确类型(请参阅 getViewTypeCount() 和 getItemViewType(int))。parent
: 此视图最终将附加到的父级
我理解了 position
参数,就像他们说的那样,它只是被请求的视图的项的位置。
convertView
是从哪里来的呢?我看过许多示例,其中检查 convertView
是否为空。如果为空,它们会膨胀一个新的行布局实例,填充它并返回它。我想我已经理解了这一点,但仍然有一件事让我感到困惑。通过 convertView
参数传入的布局是什么?它是在初始化 ArrayAdapter
时传入的 resource 参数吗?它是由上一个调用 getView()
返回的布局的缓存副本吗?
最后,parent
参数是做什么的。我还没有看到太多利用它的示例。大多数示例只是重用/膨胀行布局并返回它。
我提出这个问题是因为我的 ListView
中有一个点击动画。具体来说,这是 一个旨在复制 Spotify 下拉式快速操作菜单的动画。我的动画有点卡顿。经过一段时间的诊断后,我意识到这是由于我的 getView()
方法需要一些时间来完成,因为我在每次迭代中都会充气一个新的行布局。有人建议在 ViewHolder
中缓存行布局,而其他示例则指向重用 convertView
参数,即仅在 convertView
为空时充气行布局。