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)
    }

}

 

由于代码太多,完整代码未给出,源码直接下载即可

源码点击下载

 

posted @ 2017-08-29 16:08  切切歆语  阅读(1474)  评论(0编辑  收藏  举报