Nuke Olaf - Log Store

[MVP] 안드로이드에 mvp 패턴 적용하기(5) - Activity 에 View 구현 본문

ComputerScience/[디자인 패턴]

[MVP] 안드로이드에 mvp 패턴 적용하기(5) - Activity 에 View 구현

NukeOlaf 2020. 3. 10. 05:51
<안드로이드에 mvp 패턴 적용하기 시리즈>
안드로이드에 mvp 패턴 적용하기(1) mvp 패턴이란?
안드로이드에 mvp 패턴 적용하기(2) Contract 작성
안드로이드에 mvp 패턴 적용하기(3) Model 정의
안드로이드에 mvp 패턴 적용하기(4) Presenter 만들기
안드로이드에 mvp 패턴 적용하기(5) Activity 에 View 구현

이제 Model 과 Presenter 를 만들었으니, View 를 만들고 Presenter 를 통해 View 와 Model 을 연결해 주도록 하자.

View 를 구현하는 방법은 간단하다.

 Activity 에 전에 정의해두었던 Contract.View 인터페이스를 implement 하여 View 관련 함수들을 작성해주면 된다.

그 다음, MainActivity 의 onCreate 에서 버튼에 클릭 리스너를 달아주거나, presenter 를 통해 초기화를 시켜주는 코드를 작성한다.

class MainActivity : AppCompatActivity(), Contract.View{

    private lateinit var presenter: Presenter
    private lateinit var repository: InfoRepository

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        repository = InfoRepository(this)
        presenter = Presenter(this@MainActivity, repository)

        presenter.initInfo()
        initButtonListener()
    }

    override fun showInfo(info: JSONObject) {
        name_output.text = info.getString("name")
        email_output.text = info.getString("email")
    }

    fun initButtonListener() {
        button_submit.setOnClickListener {

            var info = JSONObject()
            info.put("name", name_input.text.toString())
            info.put("email", email_input.text.toString())

            name_input.text.clear()
            email_input.text.clear()

            presenter.setInfo(info)
            presenter.saveInfo(info)
        }
    }
}

 

이렇게 mvp 패턴으로 간단한 기능의 화면을 만들어 보았다.

Comments