【问题标题】:ListView holder with a dynamic number of elements具有动态元素数量的 ListView 持有者
【发布时间】:2015-01-09 05:08:21
【问题描述】:

这是我面临的问题。我正在开发一个自定义列表视图,其中单个列表视图项由多个文本和图像视图组成。但根据项目属性,有时需要 4 个 TextView,有时 1 个,有时 6 个……这个数字是动态的,我无法弄清楚如何开发一个合适的视图持有者模式。

我无法通过创建多个 TextView 并在必要时隐藏它们并显示来解决问题,因为我不知道每个项目需要多少个。

并且每次在 getView 中动态地膨胀它们并添加到布局中至少可以说是灾难性的:(

在持有者中有一个视图数组列表然后解决问题是一个可行的解决方案吗?

【问题讨论】:

  • 你没有理解我的问题,我的观点持有者没有持有静态数量的观点
  • 你没有像 10 文本视图那样修复
  • 这可能是一个快速修复,但如果超过 10 个会发生什么?

标签: android android-listview baseadapter android-viewholder


【解决方案1】:

我建议使用适配器视图类型:getItemViewType() and getViewTypeCount() 视图类型的数量取决于需要多少排列来表示单个列表项的所有不同外观。

因此,如果有 4 种不同的 UI 外观,那么您将拥有 4 种不同的视图类型。然后,您将拥有一个代表每种类型的 ViewHolder。然后在getView() 中,您只需检测位置表示的类型并根据需要进行膨胀/填充。您无需担心隐藏 UI 的不同部分来改变外观。适配器将确保只为您提供正确类型的回收视图。

有关使用视图类型的详细说明,请查看post

【讨论】:

  • 该解决方案不能应用于我的案例,因为我没有静态数量的视图类型......我想到了一百多种组合......我已经在 viewholders 和一些调试就像一个魅力。
  • 哇。这是很多组合。
猜你喜欢
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2012-04-13
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多