0

我有一个自定义列表,其中我重载了 getView 函数,并且我需要知道正在绘制的当前项目的 y 位置。我需要它与整个列表相关,而不仅仅是屏幕上可见的列表。我怎样才能找到这个?

编辑:项目有不同的高度。

4

1 回答 1

0

由于您想要相对于列表顶部的那个(而不是可见屏幕的顶部,您可以使用以下方法计算它:

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 中填充。请注意,此解决方案跟踪每个项目的单个高度以及绝对偏移量 - 因为需要前一个项目的位置 + 高度来确定下一个项目的位置。

于 2012-05-30T22:21:54.190 回答