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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.