안녕하세요. 아래와 같은 방식으로 리스트뷰의 항목들중 원하는 것만 체크해서 삭제하는 기능을 구현하고 있습니다.
test = (RelativeLayout)listView.getChildAt(i); //여기서 listView는 현재 보여지는 listview.
check_stu = (CheckBox) test.getChildAt(1);
Log.e("체크확인","test : "+ check_stu.isChecked());
if문으로 체크된 녀석만 삭제하는 식으로.,.그렇게 하는데, 문제점이 크게 두가지가 발생했습니다.
1.
위의 그림을 보시면. 리스트 항목들의 갯수는 굳이 정해져있지 않고 사용자가 추가 삭제 하면서
가변적으로 변하는데요, 지금은 전체 갯수가 13개라고 가정하겠습니다.
리스트뷰에서 0개부터 시작해서 하나 하나씩 추가 하고 10번째 [리스트뷰에서 스크롤하지 않고 보이는 영역]까지는
체크하면 삭제가 잘 됩니다. 문제는 그 뒤부터인데요, 10번째까지 이상이 없어서 11번째를 추가하고
(추가버튼이 따로있습니다) 스크롤 한 후, 체크박스로 삭제하려고 하면 에러가 뜹니다.
check_stu = (CheckBox) test.getChildAt(1); <-이부분에서 널 포인트 익셉션 에러가 발생합니다.
정확하게 왜 그런건지는 모르겠지만, 체크박스값을 찾지못하는것 같은데 혹시 리스트뷰 영역에 벗어나게 되서 그런건지..
2.
위의 상태에서 스크롤로 리스트뷰를 내리면 체크박스가 중복체크 되는 경우가 발생합니다..
검색해보니 view의 재사용?문제라는데요.. 총체적 난국입니다-_-;;
일단 1번이라도 해결 할 수있으면 좋겠는데, 저 방식 말고 다른 방식으로 checkbox와 리스트를 구현 할 수있는 방법에 대해 조언 좀 부탁드립니다. 긴글 읽어주셔서 감사합니다.