마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

인터페이스 리스너 이해안가는부분

0 추천
//인터페이스 생성
public interface OnCheckListener
{
public void onCheck(CCheckButton _btn, boolean _bCheck);
}

//리스너 객체 생성
private OnCheckListener m_listener; 

//구현?
public void setUseCheckListener(OnCheckListener _listener)
{
m_listener = _listener;
}

//클릭했을때
@Override
public void onClick(View v)
{
 m_listener.onCheck(this, m_bCheck);
super.onClick(v);
}
 
 
 
 
제가 소스를보면서 비슷하게 구현중인데
인터페이스 공부해도 잘모르겠네요...
인터넷에 나와있는거랑 위에 코드랑 쓰는방법이 약간다른거같아 너무 햇갈립니다.
 
제가 궁금한점은 리스너에 대한 내용을 써야하지않나요?
 
클릭했을때  m_listener.onCheck(this, m_bCheck); 이부분만 달랑있는데 
 
저거로 무엇을 할수있는지 모르겠습니다..
 
질문이 무슨내용인지 모르시면 이런식으로 비슷하게 사용하는 이벤트리스너 를 알기쉽게 설명좀 해주세요 ㅠ
타키믹 (400 포인트) 님이 2013년 8월 1일 질문
Java 란 프로그래밍 언어에 대해서 먼저 학습하세요.

1개의 답변

0 추천
 
채택된 답변
뭐 커스텀 리스너를 구현하는 것을 찾아보시면 더 자세히 설명이 되어있을것이라 생각됩니다.

 

기본적으로 리스너는 어떠한 시점을 캐치하여 그시점에 다른 동작을 하고자 할때 쓰입니다.

JAVA의 Interface와 implements의 개념을 이용한 패턴이라고 보시면 되겠습니다.

 

인터페이스는 메소드의 정의를 할수있으며 해당 인터페이스형의 객체를 이용하면 메소드를 호출하는 것이 가능합니다.

다만 implements된 구현부가 없다면 아무것도 실행되지 않겠지요.

 

위의 코드는 check리스너라는 인터페이스에 onCheck라는 메소드를 선언해 놓았습니다.

그리고 해당 인터페이스 객체를 외부에서 받아서 전역변수에 셋팅이 되도록 해놓았지요.

onClick메소드가 호출이 되면 check리스너의 onCheck메소드가 호출이 되도록 해놓았습니다.

 

이제 저 setUseCheckListener메소드를 통해서

내가 오버라이드한 onCheck메소드를 가진 check리스너 객체를 셋팅하면

클릭이 일어날때마다 내가 정의한 onCheck메소드가 실행되게 될것입니다.

 

많이 사용되는 리스너들이 전부 저런 형태로 작성되어서

개발하는 사람이 직접 이벤트를 구현할수있도록 제공해주는 겁니다.

반드시 이시점에서 일어날 일이 정해져있다면 리스너를 사용할 이유는 전혀 없습니다.

도움이 되었는지 모르겠네요..
이라슈 (8,770 포인트) 님이 2013년 8월 2일 답변
타키믹님이 2013년 8월 5일 채택됨
감사합니다 휴가를 갔다와서 지금에서야 채택하네요 ~
감사합니다!~ ㅎ
...