2015. 1. 24. 07:29ㆍProgramming/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(){
// 이벤트 수신
}
});