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