체크박스 영역이 클릭되도록 하는 방법은 아주 간단하다. 그저 LinearLayout을 상속받은 CheckBoxArea를 xml로부터 불러와 OnClickListener만 추가해주면 되는것이다.
하지만 아직 문제는 남아있다. 바로 체크박스가 체크되지 않는다는 것이다. 그렇다면 소스에서 임의로 체크표시가 되도록 수정 할 필요가 있다. 역시 먼저 xml의 CheckBox를 가져온 후 부모인 CheckBoxArea가 클릭이 되었을때 체크가 되거나 해제되도록 한다. 클릭시의 이벤트이므로 onClick(View v)부분에 해당기능을 구현하도록한다.
이제는 체큽박스 영역을 클릭하면 체크박스가 체크되거나 해제되는것을 볼 수 있다.
@Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(R.layout.list_items, null); } final CheckBoxArea cba = (CheckBoxArea) convertView.findViewById(R.id.checkBoxArea); cba.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); if (values[position] != null) { TextView tv = (TextView) convertView.findViewById(R.id.textView); if (tv != null) { tv.setText(values[position]); } } return convertView; }
하지만 아직 문제는 남아있다. 바로 체크박스가 체크되지 않는다는 것이다. 그렇다면 소스에서 임의로 체크표시가 되도록 수정 할 필요가 있다. 역시 먼저 xml의 CheckBox를 가져온 후 부모인 CheckBoxArea가 클릭이 되었을때 체크가 되거나 해제되도록 한다. 클릭시의 이벤트이므로 onClick(View v)부분에 해당기능을 구현하도록한다.
@Override public void onClick(View v) { cb.toggle(); }
이제는 체큽박스 영역을 클릭하면 체크박스가 체크되거나 해제되는것을 볼 수 있다.