안드로이드 개발 질문/답변
(글 수 45,052)
listview 에 체크박스 관련해서 많은 질문들이 있었던거 같은데요
제가 한가지 묻고 싶은것은 체크박스를 하나 클릭했는데 스크롤을 내리고 올리다 하다보니
제가 클릭하지 않은 항목도 갑자기 체크된 상태로 보이게 되는 일이 있던데요
이건 어떤 처리를 해줘야 하는건가요?
그리고 체크박스의 체크상태 여부를 조사는 어찌 해야 하는지도 좀 궁금해서 이렇게 질문 올려봅니다..
2010.03.26 13:00:09
리스트뷰의 아이템이 재사용되도록 해서 메모리와 속도를 높이는데
이부분에서 그냥 아이템의 위치로 체크한다면 문제가 생깁니다.
신동호님 말씀대로 저장된 데이터쪽에서 체크 필드가 존재해야합니다.
^^
2010.03.26 13:33:51
저로 리스트뷰에 체크박스 때문에 고생 좀 했었습니다.
리스트뷰에 커스텀 어댑터를 올린 경우에 리스트 뷰 한 항목에 체크를 하고 리스트를 내려보면
일정한 간격으로 체크가 자동으로 되어 있는 경우였습니다.
이런 경우 저는 getView 에서 체크박스의 on / off 를 항상 설정하도록 해서 해결했습니다.
if("0".equals(check)) {
vh.cb.setChecked(false);
}else {
vh.cb.setChecked(true);
}
코드는 뭐 이런식이였습니다.
리스트뷰에 커스텀 어댑터를 올린 경우에 리스트 뷰 한 항목에 체크를 하고 리스트를 내려보면
일정한 간격으로 체크가 자동으로 되어 있는 경우였습니다.
이런 경우 저는 getView 에서 체크박스의 on / off 를 항상 설정하도록 해서 해결했습니다.
if("0".equals(check)) {
vh.cb.setChecked(false);
}else {
vh.cb.setChecked(true);
}
코드는 뭐 이런식이였습니다.
2010.03.26 14:48:50
지금 현재 BaseAdapter 의 getView에 이런 식으로 구현되어있는데 무엇이 문제인지 확실히 모르겠네요;;;
vh.Check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
state[pos] = isChecked; // 체크여부를 저장할 boolean[]
Log.i(TAG, "Positon[" + pos + "] checkState[" + state[pos]
+ "]"); }
});



