안드로이드 이벤트 리스너 만들기

2015. 1. 24. 07:29Programming/Android

Custom View를 만들거나 비동기로 callback return을 받기 위해서는 해당 custom 객체에 이벤트 리스너를 만들어 줘야 한다.

(그래야 이벤트를 주고 받을 수 있으니깐...)

일단 Custom View에 이벤트 리스너 Interface를 선언. 

인터페이스 내의 함수에는 event받을 때 처리하고자 하는 파라미터들을 기입해도 상관없다.


public interface SampleEventListener{

void onReceivedEvent();

}


그 후엔 이제 Custom View에서 interface로 선언했던 이벤트 리스너를 변수로 등록한다.


private SampleEventListener mSampleEventListener;


외부에서 이벤트를 등록할 수 있도록 setEvent 함수를 만들어 준다.


public void setOnSampleReceivedEvent(SampleEventListener listener){

mSampleEventListener = listener;

}


Custom View에서는 이제 이벤트를 호출하고 싶은 경우 mSampleEventListener.onReceivedEvent() 함수를 호출하면 된다.

그러면 이벤트를 등록한 쪽에서는 Custom View에서 호출한 이벤트를 받을 수 있게 된다.

(이벤트 호출 시 주의할 점이 반드시 mSampleEventListener가 null인지 아닌지를 체크한 후 onReceivedEvent() 함수를 

호출해야 한다.

(null일 경우 함수 호출하면 당연히 에러...)


이벤트를 등록한 쪽에서는 다음과 같은 형태로 이벤트를 수신하게 된다.


CustomView view = new CustomView(this);

view.setOnSampleReceivedEvent(new CustomView.SampleEventListener(){

@Override

public void onReceivedEvent(){

// 이벤트 수신

}

});