안드로이드 에서 Delegate를 쓸수 있나요?

조회수 4119회

만약에 쓸수 있다면 간단한 예시쫌 주시면 감사하겠습니다

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    일종의 Callback 개념이네요. Java의 interface를 구현해서 사용하면 됩니다. 가장 쉬운 예제인 setOnClickListener의 구조를 보면 이해가 될 거에요.

    다음은 ClassB에서 넘어온 String s는 이 곳에서 콜백으로 넘어온 데이터를 한 번 더 처리해주는 간단한 예제입니다.

    
    // 콜백 인터페이스
    public interface CustomCallback {
    
        public void onCall(String s);
    
    }
    
    // 콜백 선언을 한 클래스
    public class ClassB {
    
        CustomCallback mCallback;
    
        public ClassB(CustomCallback callback) {
            this.mCallback = callback;
        }
    
        public void callMe() {
            System.out.println("ClassB Call");
            if(mCallback !=null){
                String data = "original data";
                System.out.println(data);
                mCallback.onCall(data);
            }
        }
    
    }
    
    // 실제 실행 부분
    ClassB b = new ClassB(new CustomCallback() { 
    
        @Override
        public void onCall(String s) {
            // 여기에서 콜백으로 넘어온 데이터 핸들링을 하게 됩니다. interface에서는 String을 넘겨주니깐 이 친구가 넘어오겠지요.
            System.out.println(s + "처리가 되었습니당.");
        }
    });
    
    b.callMe();
    

    실행 하면

    ClassB Call original data original data처리가 되었습니당.

    이렇게 결과가 나오게 됩니다~

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 단, 실제 안드로이드에서 Mainthread가 아닌 경우에는 runonui안에서 작동시켜야 탈이 없습니다 알 수 없는 사용자 2016.6.3 10:45

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)