【发布时间】:2012-09-06 04:35:32
【问题描述】:
您能解释一下ArrayAdapter 的getView() 方法吗?
我阅读了文档,它有三个参数:
-
position: 适配器数据集中项的位置 我们想要其视图的项目。 -
convertView:如果可能的话,要重用的旧视图。注意:在使用之前,您应该检查此视图是否为非空且类型合适。如果无法将此视图转换为显示正确的数据,此方法可以创建一个新视图。
异构列表可以指定其视图类型的数量,以便此视图始终是正确的类型(参见 getViewTypeCount() 和 getItemViewType(int))。 -
parent: 这个视图最终会附加到的父级
我了解position 参数。就像他们说的,它暗示了请求查看的项目的位置。
convertView 来自哪里。我见过很多例子,他们检查convertView 是否为空。如果 is 为 null,它们会扩充行布局的新实例,填充并返回它。我想我也明白了这一点,但有一件事仍然让我感到困惑。通过convertView 参数传入的布局是什么。如果是the resource parameter that is passed in when initialising the ArrayAdapter?是getView() 返回的最后一个布局的缓存副本吗?
最后。 parent 参数有什么作用。我还没有看到太多使用这个的例子。他们中的大多数只是简单地重用/扩充行布局并将其返回。
(我问是因为我的ListView 中有一个点击动画。特别是this one that aims to replicate Spotify's dropdown quick action menu。我的动画有点迟钝。在诊断了这个问题一段时间后,我意识到这已经是因为我的getView() 方法需要一些时间才能完成,因为我在每次迭代中都会增加一个新的行布局。有人建议将行布局缓存在ViewHolder 中,而其他示例指向重用@ 987654339@ 参数,即仅当convertView 为空时才膨胀行布局。)
【问题讨论】:
标签: java android android-listview android-arrayadapter android-adapter