사용자 정의 목록 보기 어댑터의 getView 메소드: 다중 호출에 대한 심층 분석
질문:
사용자 정의 목록 어댑터에서 getView 메소드가 여러 번 호출되는 이유는 무엇입니까? 무작위 순서인가요?
답변:
사용자 정의 목록 어댑터의 getView 메소드는 ListView 작동 방식의 고유한 특성으로 인해 순서에 관계없이 여러 번 호출될 수 있습니다. 다음은 제공된 코드에서 관찰된 동작에 대한 설명입니다.
ConvertViews:
convertView 매개변수는 재사용을 위해 재활용되는 뷰를 나타냅니다. ConvertView가 null이 아닌 경우 ListView가 해당 위치에 대한 뷰를 이미 측정하고 확장했음을 나타냅니다. 새 보기를 생성하는 대신 어댑터는 이 재활용된 보기를 재사용합니다.
getView 호출 순서:
다른 위치에 대해 getView가 호출되는 순서는 보장되지 않습니다. . ListView는 사용자 입력이 수신되기 전에도 여러 위치에 대해 getView를 호출할 수 있습니다. 이 동작은 지정된 XML 레이아웃에서와 같이 ListView의 높이가 Wrap_content로 설정된 경우 특히 일반적입니다.
getView가 여러 번 호출되는 이유:
getView가 호출됩니다. ListView의 측정 프로세스로 인해 각 위치에 대해 여러 번 발생합니다. ListView가 처음 표시되면 어댑터에서 여러 하위 항목을 측정하여 자체 높이를 결정합니다. 이 측정 프로세스는 목록의 표시되는 부분에 대해 getView 호출을 트리거합니다.
예측할 수 없는 ConvertView:
사용자가 스크롤하면 ListView가 더 이상 표시되지 않는 보기를 재활용할 수 있습니다. 새로운 직위에 재사용할 수 있습니다. 이는 사용자가 스크롤하기 전에도 ConvertView 매개변수가 null이 아닐 수 있는 이유를 설명합니다.
결론:
이상해 보일 수 있지만 호출되는 getView의 동작 여러 번 예측할 수 없는 순서로 진행되는 것은 문제가 되지 않습니다. 이는 뷰를 재사용하고 초기 레이아웃에 대해 하위 항목의 하위 집합만 측정하여 ListView가 성능을 최적화하는 방법의 본질적인 부분입니다.
위 내용은 내 ListView의 `getView` 메소드가 여러 번 호출되고 무작위 순서로 호출되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!