먼저 DB 구성입니다
public class BuildingInfo { public static final class building implements BaseColumns{ public static final String NO = "no"; public static final String NAME = "name"; public static final String LATI = "lati"; public static final String LONGI = "longi"; public static final String CNTL = "cntl1"; public static final String _TABLENAME = "building"; public static final String _CREATE = "create table "+_TABLENAME+"("+_ID+" integer primary key autoincrement, " +NO+" text not null, "+NAME+" text not null, " +LATI+" float zerofill, " +LONGI+" text zerofill, "+CNTL+" integer zerofill);"; } }
보시다시피 building 이란 테이블을 만들고 NO, NAME, LATE, LONGI, CNTL 필드가 있습니다.여기서 CTNL 필드는 나중에 체크박스의 ON/OFF 를 위해 만들어 놓았고 처음엔 '0' 으로 채욷록 했습니다.
그리고 이제 제가 구현 하고 싶은 AlertDialog 에서 setMultiChoiceItems 을 보면
new AlertDialog.Builder(this)
.setIcon(R.drawable.stat_happy)
.setTitle("삭제할 건물들을 선택하시오.")
.setMultiChoiceItems(bldgDB.get(), BuildingInfo.building.CNTL, BuildingInfo.building.NAME,
new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick (DialogInterface dialog, int which, boolean isChecked) { }
})
DB를 이용한 setMultiChoiceItems 의 원형은
setMultiChoiceItems( Cursor cursr, String isCheckedColumn, String labelColumn, DialogInterface.OnmultiChoiceClickListener listener)
입니다.
위의 코드로 실행을 시키면 에러는 발생하지 않습니다.
하지만 체크박스에 손으로 터치 했을 경우 체크박스에 표시가 되지 않습니다.
제 생각으론 onClick 매서드를 수정해야 할꺼 같은데 도통 모르겠습니다. 대부분의 예제들은 객체배열을 이용하여 구현하였는데
DB를 이용해서 구현한 예제는 없네요.
고수님들 도와 주세요.