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

BaseAdapter에서 체크박스를 생성한 경우 외부에서 제어할 수 있나요?

0 추천
String[] name = {"호랑이", "사자", "기린", "원숭이"};

String[] no = {"1", "2", "3", "4"};

 

다음과 같이 배열을 선언한 후 GridView에 BaseAdapter를 얹어 CheckBox 형태로 생성합니다.

기본적으로 체크되지 않은 상태로 생성하고, 데이터를 받아오면 그때 체크를 설정해주려 합니다.

 

이미 생성되어있는 체크박스를 전역 단에서 별도로 제어하여 체크를 해줄 수 있나요?

 

ArrayList<String> 안에 값이 "1", "4" 가 있는 경우  no배열에서 값을 찾아 그 포지션에 맞는 name의 체크박스에 체크를 해주려합니다. 즉, 호랑이와 원숭이가 체크가 되게 함입니다.

 

BaseAdapter의 getView단에서 조건을 주어 생성할 당시 체크여부는 줄 수 있으나,

이미 생성된 후에 제어를 해본적은 없어 접근방법을 어떻게 잡아야할지 감이 안옵니다.

 

convertView를 이용하면 답이 나올까 싶기도 하고.

조언 구합니다.

 

그리드뷰안에 아이템을 체크박스로 생성한 후, 그 체크 여부를 들어오는 값에 따라 제어하려 합니다.
개발자초심 (21,220 포인트) 님이 2014년 10월 31일 질문

2개의 답변

0 추천
해당 기능은 체크확인용 어레이 리스트를 하나더 생성하셔서 관리 하시면 쉽게 접근이 간능 하실거 같습니다.
ThisPlus (46,920 포인트) 님이 2014년 10월 31일 답변
답변감사합니다.
현재 체크확인용 어레이를 따로 생성하여 관리는 합니다.
접근을 getView단에서 해야될까요?
getView에서는 현재 선택되어있는지 아닌지 여부를 조건으로 두기에
두가지 다 조건을 두어 처리하기엔 불가능하지 않을까 싶어서요.
0 추천
체크 어레이를 하나 더 두면됩니다.

 

전역에 isCheck[] 를 선언하구요

index로 true, false를 집어넣으면됩니다.

 

getView에서는 checkbox.setCheck(isCHeck[position])

을 하시면 isCheck를 가져와서 체크를 할거구요.

getView는 드래그하면 새로 호출되지만 adapter.setDataChange로 강제로 새로고침해도됩니다.
기초개발자 (24,040 포인트) 님이 2014년 10월 31일 답변
답변 감사했습니다.
간혹 이용할 때 이와 같은 방법으로 하니 잘 되네요.
...