MVP的简单实现(本地登陆)

来源:互联网 发布:linux socket udp监听 编辑:程序博客网 时间:2024/06/05 17:20
M层package com.example.mvp2;/** * author:Created by MingShao on 2017/12/1. */public interface LoginModel {    public interface OnloginFinishListener{        void showProgress();        void hideProgress();        void onSuccess();        void inFailed();    }    void login(String username,String userpwd,OnloginFinishListener onloginFinishListener);}------------------------------------------------------------package com.example.mvp2;import android.os.Handler;import android.text.TextUtils;/** * author:Created by MingShao on 2017/12/1. */public class LoginModelpi implements LoginModel{    @Override    public void login(String username, String userpwd, final OnloginFinishListener onloginFinishListener) {        if(TextUtils.isEmpty(username)){            onloginFinishListener.inFailed();        return;        }        if(TextUtils.isEmpty(userpwd)){            onloginFinishListener.inFailed();            return;        }        new Handler().postDelayed(new Runnable() {            @Override            public void run() {            onloginFinishListener.onSuccess();            }        },5000);    }}
V层package com.example.mvp2;/** * author:Created by MingShao on 2017/12/2. */public interface LoginView {    void showProgress();    void hideProgress();    void onSuccess();    void inFailed();}------------------------------------------------------------package com.example.mvp2;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements LoginView{    private EditText etnam;    private EditText etpwd;    private ProgressBar pb;    private LoginPresenter loginPresenter;    private Button bt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        etnam = findViewById(R.id.etname);        etpwd = findViewById(R.id.etpwd);        bt = findViewById(R.id.bt);        pb = findViewById(R.id.pb);        loginPresenter = new LoginPresenterImpl(this);        bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                loginPresenter.verfiyLogin(etnam.getText().toString(),etpwd.getText().toString());            }        });    }    @Override    public void showProgress() {       pb.setVisibility(View.VISIBLE);    }    @Override    public void hideProgress() {    pb.setVisibility(View.GONE);    }    @Override    public void onSuccess() {        Toast.makeText(this,"登陆成功",Toast.LENGTH_SHORT).show();;    }    @Override    public void inFailed() {    etnam.setError("用户名错误");    etpwd.setError("密码错误");    Toast.makeText(this,"登陆失败",Toast.LENGTH_SHORT).show();    }}
P层package com.example.mvp2;/** * author:Created by MingShao on 2017/12/1. */public interface LoginPresenter {    void verfiyLogin(String username,String userpwd);}------------------------------------------------------------package com.example.mvp2;/** * author:Created by MingShao on 2017/12/1. */public class LoginPresenterImpl implements LoginPresenter,LoginModel.OnloginFinishListener {    private final LoginModel loginModel;    LoginView loginView;    public LoginPresenterImpl(LoginView loginView) {        this.loginView = loginView;        loginModel = new LoginModelpi();    }    @Override    public void verfiyLogin(String username, String userpwd) {        if(loginView==null)            return;            loginModel.login(username,userpwd,this);    }    @Override    public void showProgress() {        loginView.showProgress();    }    @Override    public void hideProgress() {        loginView.hideProgress();    }    @Override    public void onSuccess() {        loginView.onSuccess();    }    @Override    public void inFailed() {        loginView.inFailed();    }}
M层布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.mvp2.MainActivity">    <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/etname"        android:hint="请输入用户名"        />    <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/etpwd"        android:hint="请输入密码"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/bt"        android:text="登陆"        />    <ProgressBar        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/pb"        /></LinearLayout>
原创粉丝点击