클릭 이벤트를 구현해서 버튼으로 넘겨주면 버튼에서는 해당 OnClickListener 타입의 인스턴스를 가지고 있습니다. 그러다 사용자가 클릭을 하면 해당 인스턴스의 onClick()을 호출해 줍니다.
public void setOnClickListener(OnClickListener listener) {
mOnClickListener = listener;
}
위와같이 버튼안에서 리스너를 등록하면 mOnClickListner에 참조를 저장하고 있다가 사용자가 버튼을 누르면 mOnClickListener.onClick()을 호출해 줍니다. 호출은 버튼에서 구현부는 내가 작성하고 있는곳 이런 원리 인거죠
좀 더 현실에 대입해 이야기 해보면 신문구독의 원리와 똑같다고 생각하시면 됩니다. 구독 신청[setOnClickListener()]만 해놓으면 알아서 신문이 나오면 배달부가 가져다 줍니다. 신문이 나와서 배달부가 가져다 주는걸 onClick() 메서드 호출이라고 생각하시고 onClick() 메서드 내부에 구현한 행동을 내가 신문을 받고 이걸 가지고 커피를 마시면서 읽을 수도 있고 우유를 마시면서 읽을 수도 있다고 생각하시면 됩니다.
클릭 이벤트를 구현해서 버튼으로 넘겨주면 버튼에서는 해당 OnClickListener 타입의 인스턴스를 가지고 있습니다. 그러다 사용자가 클릭을 하면 해당 인스턴스의 onClick()을 호출해 줍니다.
public void setOnClickListener(OnClickListener listener) {
}
위와같이 버튼안에서 리스너를 등록하면 mOnClickListner에 참조를 저장하고 있다가 사용자가 버튼을 누르면 mOnClickListener.onClick()을 호출해 줍니다. 호출은 버튼에서 구현부는 내가 작성하고 있는곳 이런 원리 인거죠
좀 더 현실에 대입해 이야기 해보면 신문구독의 원리와 똑같다고 생각하시면 됩니다. 구독 신청[setOnClickListener()]만 해놓으면 알아서 신문이 나오면 배달부가 가져다 줍니다. 신문이 나와서 배달부가 가져다 주는걸 onClick() 메서드 호출이라고 생각하시고 onClick() 메서드 내부에 구현한 행동을 내가 신문을 받고 이걸 가지고 커피를 마시면서 읽을 수도 있고 우유를 마시면서 읽을 수도 있다고 생각하시면 됩니다.