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

안드로이드 커스텀 리스너 구현 문의

0 추천
하드웨어와 모바일간에 블루투스 통신을 개발하고 있습니다.

근데 매번 구현되어있는 클릭리스너만 써봤지, 막상 리스너를 만들어서 쓰려니 막막해서요.

개념도 헷갈리구..

구현방법과 리스너에 대한 간략한 설명 좀 부탁드릴게요.
쮸뿌쮸뿌 (2,470 포인트) 님이 2016년 3월 15일 질문

2개의 답변

0 추천
저같은 경우 자바로 콜백함수를 만들때는 인터페이스를 이용합니다.

자바 콜백 인터페이스 검색하시면 관련 자료 나올거에요~
chemkaaa (6,030 포인트) 님이 2016년 3월 16일 답변
좋은 키워드 감사해요~
0 추천

우선 인터페이스를 만듭니다.

 

public interface CustomListener {
    ...
}

 

그 후 리스너를 등록하는 메소드를 정의합니다.

public void setCustomListener(CustomListener listener) {
    this.listener = listener;
}

 

그후 필요한 곳에서 리스너 콜백을 호출해 줍니다.

예를들면 블루투스 연결여부를 확인하는 메서드가 있고, 연결 성공시 콜백을 호출하려면

if(blueToothConn == true) {
    listener.onConnectionSuccess(....);
}

이런식으로 해주고, 이 클래스를 사용하는 곳에서

customClass.setCustomListener(new CustomListener() {
    public void onConnectSuccess(..) {
        ....
    }
});

 

이런식으로 작업해주시면, onConnectSuccess에 작성한 내용이

위에 블루투스 연결이 성공할 경우 콜 됩니다.

모나미153 (17,540 포인트) 님이 2016년 3월 16일 답변
public void setCustomListener(CustomListener listener) {
    this.listener = listener;
}

이 부분은 어느 부분에서 정의해줘야 하나요?
onConnectionSuccess() 안에 구현은 어느쪽에서 해줘야하나요..?
그냥 setCustomListener를 해주면 자동으로 콜백함수가 되는건가요?
onConnectionSuccess()는 제가 임의로 만든 콜백이에요.
필요한 콜백을 interface 안에 만드시면 됩니다.
블루투스 통신을 하신다고 하셨고, 리스너가 필요하다고 하셨다면, 어느 시점에 특정한 작업이 완료되었거나, 이벤트가 발생할 때 콜백을 호출하고 싶으신거죠?
그러니까, 그 시점에, 아까 위에서 만든 interface 콜백을 호출하는 것으로
리스너를 구현할 수 있습니다.
커스텀 콜백을 만드셨다면, 구현은 어느부분에서 해야하는지 바로 나오죠.
View에 OnClickListner 등록할 때 내부 구현을 어느부분에서 했었는지 생각해 보시면 이해가 가실겁니다.
일단 개발을 하면서 익히는게 빠를 것 같아요.
친절하게 알려주셔서 감사해요~
앞으로 글 쓸때 모나미153님을 지정해서 쓰고싶네욬ㅋㅋㅋ~
오늘도 수고하세요
아 그리고 하나의 리스너 인터페이스 안에서 여러개의 함수선언도 가능한거죠?
네 당연히 가능합니다.
하지만 여러개를 선언할 경우 해당 콜백을 사용하던 안하던 구현은 무조건(공백으로 두더라도) 해야됩니다.
abstract 함수라 override는 해줘야 된다는 말씀이신거죠?
구현시점도 찾은 것 같아요!
정말 감사해요!
...