2017-03-03 4 views
2

ListView 안에 자식 행을 가져 오는 데 현재 getChildAt 메서드를 사용하고 있습니다. 이 문제는 ListView이 맨 위로 스크롤되는 경우에만 자식을 올바르게 가져 오는 것입니다.ListView에서 자식의 실제 인덱스를 가져 오는 방법은 무엇입니까?

첫 번째 행이 숨겨져 있고 위치 1에 getChildAt 메서드가 호출되도록하려면 아래로 스크롤하여 ListView의 세 번째 뷰를 얻습니다.

화면에 표시되는 위치가 아닌 실제 위치로 하위보기를 가져 오는 방법이 있습니까? 위의 경우 getChildAt은 화면에 표시되지 않더라도 여전히보기 (두 번째 하위)를 반환합니다.

답변

1
public View getViewByPosition(int pos, ListView listView) { 
final int firstListItemPosition = listView.getFirstVisiblePosition(); 
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1; 

if (pos < firstListItemPosition || pos > lastListItemPosition) { 
    return listView.getAdapter().getView(pos, null, listView); 
} else { 
    final int childIndex = pos - firstListItemPosition; 
    return listView.getChildAt(childIndex); 
}} 

참조 : android - listview get item view by position

관련 문제