如何在重写'getView'函数中获取Android列表视图中项目的y位置?

时间:2012-05-30 22:11:52

标签: android listview position

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

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

1 个答案:

答案 0 :(得分: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中填充。请注意,此解决方案会跟踪每个项目的个别高度和绝对偏移量 - 因为需要上一个项目的位置+高度来确定下一个项目的位置。