教你从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地址
推荐阅读
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 一个小故事,我的思考。
- Docker应用:容器间通信与Mariadb数据库主从复制
- 第三节|第三节 快乐和幸福(12)
- 你到家了吗
- 一个人的碎碎念
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 死结。
- 我从来不做坏事
- 赢在人生六项精进二阶Day3复盘