我有一个自定义列表,我在其中重载getView函数,我需要知道正在绘制的当前项的y位置。我需要它与整个列表有关,而不仅仅是屏幕上可见的那些。我怎么能找到这个?
编辑:项目有不同的高度。
答案 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中填充。请注意,此解决方案会跟踪每个项目的个别高度和绝对偏移量 - 因为需要上一个项目的位置+高度来确定下一个项目的位置。