我有一个自定义列表,其中我重载了 getView 函数,并且我需要知道正在绘制的当前项目的 y 位置。我需要它与整个列表相关,而不仅仅是屏幕上可见的列表。我怎样才能找到这个?
编辑:项目有不同的高度。
由于您想要相对于列表顶部的那个(而不是可见屏幕的顶部,您可以使用以下方法计算它:
int yPos = view.getHeight() * position;
编辑:不同的高度?这可能会损害性能,因为回收器没有太大帮助。
我不认为这种情况有什么神奇的方法。实际上,您要做的是保留列表位置和 y 偏移量的数组,例如
// Item at position 0, top starts at 0, height is 15
pos[0][0] = 0
pos[0][1] = 15
// Next item starts one pixel down from previous item's top, is 10 pixels tall
pos[1][0] = 16
pos[1][1] = 10
只需从 getView 中填充。请注意,此解决方案跟踪每个项目的单个高度以及绝对偏移量 - 因为需要前一个项目的位置 + 高度来确定下一个项目的位置。