안드로이드 개발 질문/답변
(글 수 45,052)
ListView 안에 CheckBox와 TextView를 커스텀으로 넣었습니다.
리스트를 띄운 후 CheckBox에 체크를 하면
화면에 보이는 리스트만큼 지나서 ( 예를들면 한화면에 7개의 리스트가 보이면 8번째에 )체크가 또 되어 버립니다.
이렇게 화면을 내릴수록 반복되서 체크가 되어 버립니다.
체크는 맨 첫번째에 한번밖에 안했는데 말이죠..
이와 같은 현상은 왜 생기는 걸까요?
그리고 정말로 체크한 것만 체크되게 하고 나머지는 체크해제상태로 하는 방법이 있을까요?
벌써 3시간넘게 이걸로 해매고 있네요;;;
고수님들의 도움을 요청합니다.ㅠㅠ




원인은 bindView 파라메터로 넘어오는 view 객체에 있습니다.
view 객체는 이전에 사용하던 값을 그대로 사용합니다.
쉽게 말해 리스트 뷰는 리스트 1번부터 6번까지는 그리고 7번부터 는 대기 상태에 있다가 스크롤시 getView를 호출 하는 구조로되어있습니다.
이때 새로 호출된 bindView 혹은 getView에서 파라메터로 사용되는 View는 기존에 사용하던 View 라서 기존의 값을 가질 수 밖에 없습니다.
그래서 이때 view에 display 내용은 if문만 아니라 else 문도 적용 해줘야 합니다.
그거 외엔 index(Position) 문제 일 수도 있습니다.