为每个列表项创建自定义视图的最佳方法

时间:2010-11-04 21:43:47

标签: java android performance implementation

当我正在审查和原型化我的android项目时,我注意到有一个视图有一个非常自定义的项目列表。我已经想出了我计划使用的大部分工具,但我需要一些建议。

我有一个项目列表,其中可以包含照片,右边有一些文字,底部有图片,下面有更多文字。我知道这很混乱。这些中的每一个都可能存在于物品中。标题是唯一永远存在的东西。

所以我的问题 - 创建每个自定义列表项视图的最佳方法是什么?我想我必须使用这个getView来创建每个视图。但是在创建每个视图时,最好是1)动态创建视图并添加图像(例如,如果存在),或2)创建包含所有可能元素的xml文件并根据项目隐藏它们?

2 个答案:

答案 0 :(得分:3)

在性能方面#2更好,因为您可以将ListView给出的convertView重用为适配器作为getView()参数。要允许平滑的ListView滚动,您必须避免在getView()调用期间创建任何View。

您可以在this sample from the Developer Guide中找到有效的getView()实现。有两个要点:

  • 在可用时重用convertView
  • 使用附加到View的ViewHolder,以避免在每次调用getView()
  • 时再次查找子视图

答案 1 :(得分:0)

我会选择#2。您可以制作包含所有项目的xml布局,然后编写一个列表适配器,您可以根据需要隐藏和显示项目。这样,如果你需要更改布局,你可以调整xml。