brunch

You can make anything
by writing

C.S.Lewis

by 윤형도 Mar 08. 2016

빠르게 배우는 안드로이드 -7 ClickEvent-4

클릭이벤트를 만드는 3가지방법 



위 강의에 이어서 진행합니다.

지난 시간까지의 코드를 통해서 
View.OnClickListener mClickListener = new View.OnClickListener() {
 @Override
 public void onClick(View v) {

}};
위와 같은 ClickListener코드를 만들고 이벤트를 적용할 View에
display_textView.setOnClickListener(mClickListener);
setOnClickListener를 적용함으로써 이벤트를 구현할수있었습니다.

이것이 첫번째 클릭이벤트 구현방법입니다. 오늘은 추가적으로 2가지 방법을 더 학습해보도록합시다. 저희가 처음 배운 클릭이벤트 구현방법이 가장 어려운 방법이고 나머지 2가지 방법은 더 쉽습니다.

2.Annoymous class(익명 클래스)를 통한 클릭이벤트

우선 Annoymous class(익명 클래스)를 통한 클릭이벤트 구현방법을 알아보도록 합시다.

쉽게 생각하면

View.OnClickListener mClickListener = new View.OnClickListener() {
 @Override
 public void onClick(View v) {

}};

이 코드에서 View.OnClickListener mClickListener = 이부분을 제거한 것과
display_textView.setOnClickListener()을 더해서 사용하는 방법입니다.
display_textView.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {

}});
다음과 같이 하는것이 익명클래스를 이용한 방법입니다. 앞에 View.OnClickListener mClickListener 이 부분을 제거하였기때문에 display_textview 말고는 이 onClickListener를 재 사용할수있는 방법이 없습니다. 따라서 onClickListener가 할당된 변수가 없으므로 이를 익명클래스라고 합니다. v.getId()등으로 구분할필요가없거나 간단하게 클릭이벤트를 구현하고싶을때 주로 사용하는 방법입니다.

3.Implements를 이용한 클릭이벤트

선언된 클래스 자리에 implements를 통해서 onClickListener를 상속받는 방법입니다.    

위와같이 implements라는 코드를 추가하고 View 를 타이핑후 .을 누르면 다음과같은 자동완성이 생기는 것을 볼수있습니다. 여기서 onClickListener를 선택하면

다음과 같이 빨간색 밑줄이 있는것을 볼수있습니다. 이것은 Interface를 implements를 해놓고 override를 해야하는것들이 아직 override되어있지 않다는것을 Studio에서 알려주는 것입니다.

밑줄부분에 마우스를 클릭후 alt+ insert키 를 누르고    

Implement Methods를 선택하거나    

메뉴의 Code -> Implement Methods를 선택하면    

다음과 같은 화면이 나옵니다. 여기있는 onClick을 선택후 Ok버튼을 누르면됩니다.    

다음과 같이 onClick이라는 메소드가 Override된것을 볼수있습니다.

이제 이 onClick을 view에 연결해주어야 합니다.

이벤트를 발생시킬 View.setOnclickListener(사용중인 Activity클래스이름.this) 와 같은 방법으로 사용합니다.

ex)

display_textView.setOnClickListener(MainActivity.this);

이러한 방법으로 하면 onClickListener를 동작시킬수 있습니다.

위의 3가지 방법을 응용하여 다양한 이벤트를 동작시킬수 있습니다.

매거진의 이전글 빠르게 배우는 안드로이드-6 ClickEvent-3
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari