我的问题是关于制作一个支持 rowSpan 和 colSpan 的 GridView。我在堆栈溢出等方面寻找它。有一些类似的问题,但没有有效的答案。
一种方法是实现具有不同行类型的自定义 ListView 适配器。使用 getItemViewType(int position) 可以帮助优化这种情况,但我担心会有太多的 ViewTypes 会使回收效率低下。因为我想要一个 3 cols 网格和一些 rowSpan 高达 4 或 5 的元素。
另一种方法可以扩展 ListView 并使这些“卡片”拥有自己的回收站。我的意思是,如果有这样的一行:
##..//
##**//
##====
##++--
通常它是 ListView 的单行,但它应该有自己的孩子和自己的层次结构。这一行永远不会被重用,因为它真的很独特。如果我们使用自定义回收器,所有卡片(如上述 ascii 艺术的“#”、“=”或“+”)都应进入特定尺寸的回收站(如 4x2 用于“#”,1x4 用于'=' ) 和回收的机会会高得多。
也许不使用 ListView 并在 Scroller 的帮助下实现一个全新的视图,使用它自己的回收器和在服务器端确定的每个元素的绝对位置,可能是一个更好的主意。
我问你这个,因为我认为你可能会想出一个更好的主意,或者至少给我一些建议,说明每种方式的实施难度。