kotlin for android----------MVP模式实现登录
学习了Kotlin,随便来个小案例,以MVP+Kotlin 来实现登录的一个小案例,希望对大家有所帮助,效果图:
MVP:
Model
Model 是用户界面需要显示数据的抽象,也可以理解为从业务数据(结果)那里到用户界面的抽象。
View
视图这一层体现的很轻薄,负责显示数据、提供友好界面跟用户交互就行。MVP下Activity和Fragment体现在了这一层,Activity一般也就做加载UI视图、设置监听再交由Presenter处理的一些工作,所以也就需要持有相应Presenter的引用。
Presenter
Presenter这一层处理着程序各种逻辑的分发,收到View层UI上的反馈命令、定时命令、系统命令等指令后分发处理逻辑交由业务层做具体的业务操作,然后将得到的 Model 给 View 显示。
Model
class ModelImple : IModel{ override fun onLogin(name: String, pwd: String,onLoginSetListenter: IModel.IOnLoginSetListenter) { if (name.isEmpty()) { if (onLoginSetListenter != null) { onLoginSetListenter.onError("输入用户名为空") return } } if (pwd.isEmpty()) { if (onLoginSetListenter != null) { onLoginSetListenter.onError("输入密码为空") return } } if (name.equals("zq") && pwd.equals("123456")){ if (onLoginSetListenter != null) onLoginSetListenter.onSuccess("登录成功") }else{ if (onLoginSetListenter != null) { onLoginSetListenter.onError("登录失败") } } } }
presenter
class Presenter : BasePerenter<IVew>(){ var Imodel: IModel? = null init { Imodel = ModelImple() } fun onLogin(name: String,pwd: String){ var iView = getView() /*if (false){ //验证网络 if (iView != null) { iView.onNetWork("网络未连接") } }*/ Imodel!!.onLogin(name,pwd,object : IModel.IOnLoginSetListenter{ override fun onSuccess(success: String) { if (iView != null){ iView.showLoading(success) } } override fun onError(error: String) { if (iView != null){ iView.onError(error) } } }) } }
activity
class MainActivity : BaseActivity<IVew,Presenter>(),IVew{ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btn.setOnClickListener { p!!.onLogin(username.text.toString(),password.text.toString()) } } override fun createPresenter(): Presenter { return Presenter() } override fun showLoading(msg: String) { toast(msg) } override fun onNetWork(net: String) { toast(net) } override fun onError(error: String) { toast(error) } }
由于代码太多,完整代码未给出,源码直接下载即可