如果自定义列表视图行内容是动态的,如何使用视图持有者?

Posted

技术标签:

【中文标题】如果自定义列表视图行内容是动态的,如何使用视图持有者?【英文标题】:how to use view holder if custom listview row content are dynamic? 【发布时间】:2014-12-29 19:02:47 【问题描述】:

我已经使用基本适配器创建自定义列表视图到动态行 content.row 内容以编程方式创建(复选框、文本视图),它们包含在布局中。 滚动时间的问题他们很慢,因为不使用 视图持有人。我如何使用视图持有者这种类型的自定义列表视图? 有什么解决方案或建议吗?

关注此列表..

【问题讨论】:

每行需要多少个最大动态视图?如果固定为 3 或 4,那么您可以在适配器视图中创建它并根据需要设置可见性。 可能是连续创建视图的数量,最初我们无法预测会创建多少视图。 使用表格布局并添加行数 【参考方案1】:

ViewHolder 在重复相同视图时用于列表视图。假设您的活动中一次总共可见 6 个项目。然后使用 viewholder 模式 6+2=8 个视图一次会被膨胀。顶部多一个,底部多一个,以提供平滑的滚动效果。现在假设执行了向上滚动操作,并且第 8 位的 item 是可见的,第 0 位的 item 将被回收并作为第 9 个 item 附加到列表的末尾。如果视图不同,则无法执行此回收。检查https://www.youtube.com/watch?v=wDBM6wVEO70

对于您的问题,您可以假设可能有 5 个最大值,然后您可以使用内部的 10 个动态视图创建适配器视图并根据需要设置可见性。

另一个选项是使用LinearLayout 并动态添加每一行,但这不会带来太多优化。

【讨论】:

以上是关于如果自定义列表视图行内容是动态的,如何使用视图持有者?的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 自定义内容类型列表视图

使用基本适配器解决方案从自定义列表中删除行视图

使用后台容器在自定义列表视图上加载动态数据

SharePoint 树视图自定义

如何使整行列表视图可点击?

如何将最新数据附加到android中的自定义基本适配器列表视图?