안드로이드에서 뷰 객체에

이벤트를 만드는 건
패턴화 되어 있어서 

어렵지 않게 개발할 수 있다.

 

TextView textView = (TextView)findViewById(R.id.textView); 

textView.setOnClickListener(new View.OnClickListener() { 
  @Override 
  public void onClick(View view){ 

  } 
}); 

 


그렇지만 왜 이런 패턴과 구조로

작성해야 하는지 궁금했다.

무작정 외우기보단

이해하고 싶어서

안드로이드 이벤트에

공부해보기로 했다

 

 

 

 


이벤트 쉽게 이해하기

 

 

1. 이해하기 어려운 이유

 

안드로이드 이벤트에 대해 찾아보니
이벤트 소스, 이벤트 핸들러, 

이벤트 리스너 같은 낯선 용어들이 

이해를 더 어렵게 하는 것 같다.
그래서 이런 용어들을 빼고

최소한의 용어들로 이해한 것들을

정리해보았다.

 

 

 

 

 

 

 

2. 뷰 (View)는 누구인가

 

 

안드로이드에서 보여지는 

버튼, 텍스트 등은 다 뷰라는 

이름의 객체이다.

 

 

 

특징 - 1. 뚜렷한 목적

 

뷰들은 다 제각기 

생성된 목적이 뚜렷하다.

 

(Ex, Button은 눌림 (Click) 을 당하기 위해, 

CheckBox는 선택 (Checked) 이 되기 위해..)

 

 

특징 - 2. 다양한 이벤트

또 하나의 특징으로는 

뷰는 다양한 이벤트를 가질 수 있다.

즉, TextView도 클릭이벤트를 

가질 수 있다는 말이다.

 

이처럼 다양한 뷰를

효율적으로 관리하기 위해

뷰는 이벤트를 실행할 때마다 

'on이벤트명()'이라는 메서드가 

실행되도록 불러준다.

 

 


3. 우리가 기대하는 뷰

 

 

사용자는 안드로이드 화면에서 

뷰를 눌렀을 때 기대하는 바가 있다

 

만약, 전송 버튼을 눌렀는데 

버튼이 눌린 시늉만 하고 

아무 일도 생기지 않으면

사용자는 앱이 고장 났다고 

볼 것이다.

 

 

 

 

 

 

 

4. 뷰의 입장 이해하기

 

 

클릭 이벤트의

패턴을 이해하기 위해서

뷰의 입장이 되어 보았다.

뷰의 입장이 돼 보면 클릭이벤트 패턴을

이해하기가 한결 수월해진다.

 

 

 

 

뷰 입장 - 1. 난처한 뷰

 

"세세한 것 하나하나 다 해달라고?

너무한 거 아니야?"

 

[그림] 뷰가 알아야 할 것들이 너무 많아진다

 

뷰 입장에서 생각해보면 

사용자가 버튼을 눌렀으면 

눌린 티만 내면 그만이지 


굳이 눌렸을 때 

어떤 일들이 어떻게 진행되는지 

다 알고 있을 이유가 없다. 

뷰가 수행해야 하는 이벤트가 한 개만

있는 것도 아니고 많은 이벤트에 대한 

세세한 내용까지 뷰가 다 관리하자니

뷰 입장에선 너무 부담스럽다.

 

더 정확히 말하자면,

뷰에 로직을 다 넣으면

무거워지고 의존성이 높아지고 등등..

아무튼 지저분해져서 보고 싶지 

않은 코드가 될 것이다. 

 

 

 

 

뷰 입장 - 2. 뷰의 책임감

 

"그래도 기능을 성실하게

수행해야 하긴 할 텐데.."

 

뷰는 사용자와 직접 소통하는 

역할을 담당하기 때문에 
아무 기능을 하지 않는 뷰는

사실 존재의 가치가 없다고

해도 과언이 아니다. 


이벤트를 효율적으로 처리할

방법이 필요한 상황이다. 

 

 

 

 

 

 

5. 뷰의 묘수

 

[그림] 로직을 대신 수행할 객체를 모집

 

뷰의 묘수 - 1. 대리자 모집

 

세세한 로직을

다 알고 싶지 않은 뷰는 로직을

다 알고 있는 대리자를 모집하기로 한다.

 

그렇다고 아무나 불러서 

일을 수행하라고 할 수는 없으니

최소한의 자격요건을 충족하는 

대리자를 모집한다.

 

 

뷰가 내건 최소한의 자격요건


 " 'on이벤트명' 메서드를 

잘 구현해낸 자"


 

이벤트가 일어날 때마다 

이벤트 이름 앞에 on이 붙은 
'on이벤트명' 메서드를 같이 호출할 테니
이벤트에 함께 호출되고 싶다면

'on이벤트명' 메서드를

작성해와서 등록하라고 한 것이다.

 

 

 

 

 

 

뷰의 묘수 - 2. 관리소장 두기

 

이제 지원한 대리자를 

관리하는 일이 남았다.  

 

뷰는 내부에 대리자 관리소장을

하나 두기로 한다.

 

관리소장은 대리자를 등록하는 

일과 이벤트가 일어났을 때 

대리자를 호출해서 로직을 

수행하도록 하는 일을 한다.

 

 

 

6. 결과 

 

[그림] 클릭 이벤트가 발생시 처리

 

이렇게 구조를 정리해 놓으니

뷰는 이제 이벤트가 발생하면

내부에 관리 소장을 불러

어떤 이벤트가 발생했다는 사실만

알려주면 된다.

 

 


 

제가 공부 후 정리한 것에 대해

혹시 다른 의견이나 수정해주실 부분 있으면

꼭 댓글 달아주세요 

저도 아직 공부하는 중이랍니다.

 

 

 

 

도움이 되는 게시글이었다면

로그인이 필요 없는 공감 버튼 꾹 눌러주세요! 

 

 

 

 

 

 

 

+ Recent posts

"여기"를 클릭하면 광고 제거.