【发布时间】:2010-08-09 17:08:25
【问题描述】:
在我的列表视图中,我有具有不同布局的项目,实际上它们多次使用一个子布局。我不能使用 getViewTypeCount() 和 getItemViewType(),因为我不知道子布局会被使用多少次。是否可以以某种方式优化 getView() 方法并使用它的 convertView 参数,还是每次都必须膨胀视图?
【问题讨论】:
在我的列表视图中,我有具有不同布局的项目,实际上它们多次使用一个子布局。我不能使用 getViewTypeCount() 和 getItemViewType(),因为我不知道子布局会被使用多少次。是否可以以某种方式优化 getView() 方法并使用它的 convertView 参数,还是每次都必须膨胀视图?
【问题讨论】:
既然您知道您将拥有多少种布局类型 - 可以使用这些方法。
getViewTypeCount() - 此方法返回您的列表中有多少行类型的信息
getItemViewType(int position) - 根据位置返回您应该使用哪种布局类型的信息
然后,只有当它为 null 并使用 getItemViewType 确定类型时,您才膨胀布局。
查看this 教程了解更多信息。
更新:
为了实现您在评论中描述的结构优化,我建议:
ViewHolder 的对象中存储视图。它将提高速度,因为您不必每次都在 getView 方法中调用 findViewById()。见List14 in API demos。希望对你有所帮助。如果您可以提供一些带有数据结构的 XML 存根以及您希望如何将其映射到行中的信息,我将能够为您提供更准确的建议
【讨论】: