1.创建View、Presenter和Model的基类
interface BaseModel
interface BasePresenter
interface BaseView
2.创建契约类Contract管理View、Presenter和Model的接口
interface TestContract {
interface View : BaseView {
fun setLoadUser(s: String)
}
interface Presenter : BasePresenter {
fun loadUser()
fun onDestroy()//必须
}
interface Model : BaseModel {
fun loadUser(): String
}
}
3.创建Model实现接口
class TestModel : TestContract.Model {
override fun loadUser(): String {
return "View --> Presenter --> Model --> Presenter --> View"
}
}
4.创建Presenter控制器
class TestPresenter(private var mView: TestContract.View?, private val mModel: TestContract.Model) : TestContract.Presenter {
override fun loadUser() {
//2.Presenter --> Model
val msg = mModel.loadUser()
//3.Model返回值 --> Presenter --> View
mView?.setLoadUser(msg)
}
override fun onDestroy() {
mView = null
}
}
注意,需要在Activity的onDestroy取消对view的持有防止内存泄漏
override fun onDestroy() {
testPresenter.onDestroy()
super.onDestroy()
}
5.创建View
class TestActivity : AppCompatActivity(), TestContract.View {
private lateinit var testPresenter: TestPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
init()
}
private fun init() {
testPresenter = TestPresenter(this, TestModel())
button.setOnClickListener {
//1.View --> Presenter
testPresenter.loadUser()
}
}
override fun setLoadUser(s: String) {
//4.Presenter --> view
textView.text = s
}
override fun onDestroy() {
testPresenter.onDestroy()
super.onDestroy()
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)