3월 25일 안드로이드 컨퍼런스가 열립니다. 드로이드 나이츠 정보 보러가기

안드로이드 MVP 무작정 따라하기 7 번째 입니다.

지난 동영상에서 AdapterContract 정의를 하였고, 이어서 OnClickListener 정의를 해보려고 합니다.


AdapterContract View - OnClickListener 정의

OnClickListener 정의는 AdapterContract View에 추가 정의를 통해 간단하게 구현할 수 있습니다.

기존 AdapterContract.View에는 다음과 같이 정의하였습니다.

interface ImageAdapterContract {

    interface View {

        void notifyAdapter();
    }
}

여기에 setOnClickListener(OnClickListener listener) 정의를 추가함으로써 Presenter에서 바로 Adapter의 OnClickListener 이벤트를 전달받고, 이를 처리할 수 있게 됩니다.

이유는 간단합니다.

  • AdapterModel/AdapterView를 Presenter에서 들고 있기 때문에 굳이, View에서 이런 이벤트를 받을 필요는 없습니다.

역시나 귀찮은 부분이 따르므로 아래의 그림과 같이 추가될 수 있습니다.

기존 그림에서 setOnClickListener 부분을 추가하였습니다.

mvp_01


AdapterContract View를 통해서 초기화하는 이유는?

AdapterContract.View에서 OnClick을 초기화하고, 이를 ViewHolder에서 정의하는 이유는 다음과 같습니다.

  • 이미 Presenter에서는 Adapter View/Model을 알고 있다.
  • 실제 View/Model을 한 번에 가지고 있는 Adapter이기 때문에 이를 굳이 View에서 처리할 필요는 없다

위와 같은 이유입니다.

결국 다시 View에서 setOnClickListener을 하고, 이 이벤트를 받아서 Presenter에 넘겨서 처리를 하는 것보단, 바로 Presenter가 받아서 이를 처리하고, View 이벤트를 분리하는게 편리하다고 생각했기에 오늘의 방법을 정리해보았습니다.


라이브 코딩

라이브 코딩은 언제나 그렇듯이 Java/Kotlin으로 담겨있습니다.


마무리

지금까지 Presenter를 분리하고, Presenter와 Adapter가 함께 있을 때 접근 방법을 살펴보았습니다.

다음 글에서는 가장 기본적인 Model을 정의해보고, Google Architecture에서 정의하고 있는 Model인 Repository(ios 개발에서는 Viper와 유사) 정의하는 방법 등을 다루어 보도록 하겠습니다.


MVP 무작정 따라하기

무작정 따라 하기는 MVP 패턴을 이해할 수 있도록 하나씩 차근차근 작성해보는 예제입니다.

그래서 각각의 브런치와 글들을 통해서 조금씩 확장해가려고 합니다.


Tae-hwan

Android, Kotlin .. Create a content development.