안드로이드 개발 질문/답변
(글 수 45,052)
listview에 간단한 정보 (TextView 와 CheckBox) 가 있고
데이터의 건수에 따라서 복수개 라인의 list가 나오는 부분을 작성중인데요.
문제는
checkBox를 개별적으로 클릭하면 AdapterView의 onItemClick() 에서 받아서 체크박스를 체크하거나 체크를 해제하거나 할 순 있는데
문제는 일괄선택 / 일괄해제 기능부분인데요
일괄선택이나 일괄해제를 클릭하면
말그대로 listview의 CheckBox를 전체선택 or 전체해제해야하는데
어떻게 해얄지 제 머리로는 쉽지않네요..
비슷한 경험 하셨던 분들 계실거 같은데
조언 좀 부탁드립니다... (꾸벅...)
2011.07.13 16:20:44
어차피 뷰의 데이터 세팅은 ListView Adapter의 getView에서 포지션마다 하는 문제구요 데이터와 뷰를 분리시켜서 생각하셔야 합니다. Adapter 에서 아이템 갯수만큼의 List<Boolean>이나 boolean[]을 가지고 있다가 전체 해제 하면 해당 자료구조에 전체 자료에 false를 세팅해주시고 전체 선택하면 전부 true로 만들어 주시게 만든다음 getView에서는 해당 자료구조의 position에 따라 CheckBox의 setChecked()로 뷰의 속성값을 바꿔주면 되겠죠
2011.07.14 10:56:21
이게 참 작업이 그렇드라구요.
우선은 custom adapter를 사용한다고 보겠습니다. 실제로 ArrayAdapter를 사용하여 simple_list_item_checked를 이용하면 간단하긴 한데
개발자가 폰트나 사이즈 등을 마음대로 수정할수없으니...
사용자 정의 어뎁터를 이용합니다. 뭐 여기까지는 하셨으니...
우선 onClick에서 받은 파라미터는 리스트 뷰의 row입니다.
그래서 해당 리스트뷰에서 다음과 같이 하시면 됩니다.
ViewGroup vg = (ViewGroup) detailsms_list.getChildAt(0); //0은 리스트에서 선택된 위치(position)
CheckBox cv = (CheckBox) vg.getChildAt(0); //0은 리스트 한 라인에 checkbox가 몇번째..
이렇게 하면 되지 않을까 합니다.



