getView 함수가 오버로드되어 있고 그려지는 현재 항목의 y 위치를 알아야하는 사용자 지정 목록이 있습니다. 그리고 나는 화면에 보이는 것들만이 아니라 전체 목록과 관련하여 그것을 필요로합니다. 어떻게 알 수 있습니까?오버라이드 된 'getView'함수에서 Android listview에서 항목의 y 위치를 얻으려면 어떻게해야합니까?
편집 : 항목의 높이가 다릅니다.
getView 함수가 오버로드되어 있고 그려지는 현재 항목의 y 위치를 알아야하는 사용자 지정 목록이 있습니다. 그리고 나는 화면에 보이는 것들만이 아니라 전체 목록과 관련하여 그것을 필요로합니다. 어떻게 알 수 있습니까?오버라이드 된 'getView'함수에서 Android listview에서 항목의 y 위치를 얻으려면 어떻게해야합니까?
편집 : 항목의 높이가 다릅니다.
당신이 목록의 맨 위에 (안 가시 화면 상단에 하나의 상대를 원하기 때문에, 당신은 사용하여 계산할 수 있습니다 :
int yPos = view.getHeight() * position;
편집 : 다른 높이 그건 아마 때문에, 성능 아파 리사이클 많은 도움이되지 않는다. 나는이 사건에 대한 마법의 방법이 있다고 생각하지 않습니다
. 현실적으로 당신이해야 할 일은 목록의 위치와 y 오프셋 (offset)의 배열을 유지하고, 예를 들어
// 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 내에서 채우기 만하면됩니다. 이 솔루션은 개별 항목의 위치를 결정할 때 이전 항목의 위치 + 높이가 필요하기 때문에 각 항목의 절대 높이뿐만 아니라 개별 높이를 추적합니다.
항목마다 높이가 다름을 지적해야합니다. 나는 그것을 추가 할 것이다. – HardCoder
나는 당신이 어디로 가고 싶은지 좋아하지 않는다. 문제는 내가 목록을 표시하고 일부 항목을 볼 수 없으므로 (아직 그리지 않았다) 그 항목에 대한 높이를 어떻게 얻을 수 있는가하는 점이다. – HardCoder
이것은 ListView의 확장 기능입니다. 맞습니까? 아래로 스크롤하는 것에 대해 이야기하는 경우 문제가되지 않습니다. 예를 들어, 항목 1과 3이 표시되지만 2와 4가 표시되지 않는다는 것을 의미하면 함께 진행하면서 업데이트해야합니다. 이 데이터가 필요한 이유는 무엇입니까? –