본문 바로가기

Android/View

[Android] 리스트 영역 나누기(3) - 리스너 추가하기

체크박스 영역이 클릭되도록 하는 방법은 아주 간단하다. 그저 LinearLayout을 상속받은 CheckBoxArea를 xml로부터 불러와 OnClickListener만 추가해주면 되는것이다.


		
		@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();
				}


이제는 체큽박스 영역을 클릭하면 체크박스가 체크되거나 해제되는것을 볼 수 있다.