마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰 전체체크 할 때 중간에 딱 하나가 체크가 안됩니다.

0 추천
지금 코드는 다른 컴퓨터에 있어서 작성한 코드를 못 올리는점 죄송합니다.

현재 전체체크 체크박스와 리스트뷰 안에 포함시킨 체크박스는 따로 만들었구요.

커스텀 adapter를 새로 만들고 뷰홀더와 setTag, getTag 그리고 체크박스의

상태를 저장한 array 를 이용해서 체크상태를 표시하고 있습니다.

현재 각각의 체크박스에 대한 반응은 제대로 이루어 지고 있구요.

전체체크 박스를 터치했을시, 포지션별 모든 체크박스의 array상태를 확인해본바

제대로 변경되었다는것도 확인했습니다.

그런데 이상하게도 전체체크박스를 클릭할 때의 리스트가 보이는 범위에서

바로 다음 안보이는 아이템 하나가 체크가 안되어있습니다.

안보이는 범위의 모든 아이템이 체크가 안되어 있었다면 코드가 이상하다고 생각했을텐데,

일정하게 딱 하나만 체크가 되어있지 않습니다.

제 폰의 리스트뷰에 한번에 출력되는 아이템은 8개+9번째 절반정도 입니다.

이때 전체체크를 선택하면 정확히 10번째 아이템만 체크가 안되고 나머지

아이템들은 모두 체크가 정상적으로 됩니다. 만약 제가 약간 스크롤 해서

5번째부터 12번째 절반정도까지 보일 때 전체체크를 하면 13번째 아이템만 체크가

안되어 있고, 맨 아래로 스크롤을 내려서 전체선택을 하면 아래에서 10번째

아이템만 체크가 안되어있습니다.

코드를 아무리 봐도 잘못된 부분이 없는것 같은데 왜 이러는지 모르겠습니다.

나중에 코드를 따로 올리도록 하겠습니다.

읽어주셔서 감사합니다.
익명사용자 님이 2013년 5월 27일 질문
질문자 분께서 하신게 맞는데요..
adapter가 워낙 민감한 부분이라..잘 살펴보시면 될 듯 합니다~
convertview넘기기 전에 상태를 저장한 array에 따라 상태가 변하는데 조건이 맞을때만 변하는게 아니라 아닌 경우에도 일일히 설정 다 해주세요.
지금 바로 가서 확인해보도록 하겠습니다. 감사합니다!

1개의 답변

0 추천
가장 쉽게 디버깅 하는 방법은 getView 에서 position 과 data 를 로그로 찍어서 확인하시는겁니다.

아무래도 array 로 저장한 값을 체크박스에 set 하는 부분에서 코드 누락이 있었던듯 싶습니다.

더불어서 위엣분이 설명하신대로 조건이 맞는경우 뿐 아니라 안맞는 경우도 세팅해줘야하니 꼭 참고하세요
블랙넥원 (9,600 포인트) 님이 2013년 5월 27일 답변
로그로 확인해보니 전체체크 했을때는 array가 정상적으로 모두 true가 됐엇는데 스크롤을 내리는 순간에 10번째 아이템만 false로 바뀌더군요. 좀더 확인해보겠습니다. 감사합니다!
...