리스트뷰, 체크박스, 그리고 체크 체인지 리스너
다음은 ListAdapter의 아이템 뷰를 가져오는 부분이다. @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.listitem, parent, false); } TextView txt1 = (TextView) convertView.findViewById(R.id.txt1); TextView txt2 = (TextView) convertView.findViewById(R.id.txt2); CheckBox chk1 = (CheckBox) convertView.findViewById(R.id.chk1); IType type = (IType) getItem(position); txt1.setText(type.getName(pref.isPreferUnicode())); chk1.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { ((IType) getItem(position)).setHidden(!isChecked); } }); chk1.setChecked(!type.isHidden()); txt2.setText(type.getHalfStepString()); return convertView; } 리스트 아이템의 레이아웃에 체크박스가 포함되어 있는데, 리스너 장착 부분과 체크 상태 설정 부분의 순서가 매우 중요하다. 파란 부분이다. 왜 그런 건진 알 수 없으나, 이 순서가 바뀌면 체크박스가 지 맘대로 작동한다.