教你从0到1搭建一个完整的电商app---(MVP封装)

上一篇我们已经创建好了基本的项目,一个App主工程,BaseLibrary和Provider两个基本Module,这三个部分我们以后可以在所有的项目中直接使用,这也是模块化管理的好处。 这篇博客主要介绍如何封装一个最基本的MVP框架,我们都知道MVP模式在Android开发中被大量使用,这样能够将业务逻辑和视图显示区分开,降低耦合性,提高代码可读性。接下来就让我们看具体的代码吧 。

interface BaseView { fun showLoading() fun hideLoading() fun onError(text: String) }

open class BasePresenter {lateinit var mView: T }

open class BaseActivity:AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) }}

open class BaseMvpActivity> : BaseActivity(), BaseView {lateinit var mPresenter: Toverride fun hideLoading() { }override fun onError(text: String) { }override fun showLoading() { }}

我们使用泛型封装了BaseActivity和BasePresenter,接下来我们创建一个UserCenter个人中心登陆界面来使用一下我们的代码
interface LoginView : BaseView { fun loginResult(result: Boolean) }

class LoginPresenter : BasePresenter() {fun login(account: String,password:String){ if (account == "admin" && password == "123456"){ mView.loginResult(true) }else{ mView.loginResult(false) } } }

class LoginActivity : BaseMvpActivity(), LoginView, View.OnClickListener {override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login)mPresenter = LoginPresenter() mPresenter.mView = this mLoginBtn.setOnClickListener(this)}override fun onClick(v: View) { when (v.id) { R.id.mLoginBtn -> { mPresenter.login(mAccountEt.text.toString(), mPassWordEt.text.toString()) } } }override fun loginResult(result: Boolean) { if (result) { toast("登陆成功") } else { toast("登陆失败") } } }


【教你从0到1搭建一个完整的电商app---(MVP封装)】到此我们MVP的简单封装就完成了,接下来我们将引入Dagger2,使用注入的方式来优化代码。
附上项目github地址

    推荐阅读