MVP实现登录注册

model类

public class LoginModel implements ILoginModel {
    @Override
    public void login(String url, String name, String pwd, final ILoginCallBack iLoginCallBack) {
        OkHttp.okHttpPost(url, name, pwd, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                iLoginCallBack.onStatus(response.body().string());
            }
        });
    }

    @Override
    public void regist(String url, String name, String pwd, final ILoginCallBack iLoginCallBack) {
        OkHttp.okHttpPost(url, name, pwd, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                iLoginCallBack.onStatus(response.body().string());
            }
        });
    }
}

model接口

public interface ILoginModel {
    void login(String url, String name, String pwd, ILoginCallBack iLoginCallBack);
    void regist(String url,String name,String pwd,ILoginCallBack iLoginCallBack);
    //定义接口
    interface ILoginCallBack{
        void onStatus(String data);
        void onFailed();
    }
}

presenter类

public class LoginPresenter implements ILoginPresenter {

    MainActivity mainActivity;
    RegistActivity registActivity;
    private final LoginModel loginModel;

    public LoginPresenter(MainActivity mainActivity) {
        this.mainActivity = mainActivity;
        loginModel = new LoginModel();
    }

    public LoginPresenter(RegistActivity registActivity) {
        this.registActivity = registActivity;
        loginModel = new LoginModel();
    }

    @Override
    public void loginPre(String name, String pwd) {

        loginModel.login(Api.LOGIN, name, pwd, new ILoginModel.ILoginCallBack() {
            @Override
            public void onStatus(String data) {
                mainActivity.showMsg(data);
                mainActivity.jumpActivity();
            }

            @Override
            public void onFailed() {

            }
        });
    }

    @Override
    public void registPre(String name, String pwd) {
        loginModel.regist(Api.REGIST, name, pwd, new ILoginModel.ILoginCallBack() {
            @Override
            public void onStatus(String data) {
                registActivity.showMsg(data);
                registActivity.jumpActivity();
            }

            @Override
            public void onFailed() {

            }
        });
    }
}

presenter接口

public interface ILoginPresenter {
    void loginPre(String name, String pwd);
    void registPre(String name,String pwd);
}

view(登录、注册)接口


public interface ILoginView {
    void showMsg(String msg);
    void jumpActivity();
}

登录Activity

public class MainActivity extends AppCompatActivity implements ILoginView{

    private EditText et_login_name;
    private EditText et_login_pwd;
    private CheckBox ck_rem_pwd;
    private TextView text_reg;
    private Button btn_login;
    private LoginPresenter loginPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_login_name = findViewById(R.id.et_login_name);
        et_login_pwd = findViewById(R.id.et_login_pwd);
        ck_rem_pwd = findViewById(R.id.ck_rem_pwd);
        text_reg = findViewById(R.id.text_reg);
        btn_login = findViewById(R.id.btn_login);
        //初始化presenter
        loginPresenter = new LoginPresenter(this);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = et_login_name.getText().toString();
                String pwd = et_login_pwd.getText().toString();
                if (TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
                    Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
                }else{
                    loginPresenter.loginPre(name,pwd);
                }
            }
        });
        text_reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 Intent intent = new Intent(MainActivity.this,RegistActivity.class);
                 startActivity(intent);
            }
        });
    }

    @Override
    public void showMsg(final String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                LoginBean loginBean = gson.fromJson(msg, LoginBean.class);
                String status = loginBean.getStatus();
                if (status.equals("0000")){
                    Intent intent = new Intent(MainActivity.this,ShowActivity.class);
                    startActivity(intent);
                    finish();
                }else{
                    Toast.makeText(MainActivity.this, loginBean.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

    @Override
    public void jumpActivity() {

    }
}

注册Activity

public class RegistActivity extends AppCompatActivity implements IRegistView {

    private EditText et_reg_name;
    private EditText et_reg_pwd;
    private EditText et_reg_yan;
    private TextView text_login;
    private LoginPresenter loginPresenter;
    private Button btn_regist;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_regist);
        et_reg_name = findViewById(R.id.et_reg_name);
        et_reg_yan = findViewById(R.id.et_reg_yan);
        et_reg_pwd = findViewById(R.id.et_reg_pwd);
        btn_regist = findViewById(R.id.btn_regist);
        text_login = findViewById(R.id.text_login);

        loginPresenter = new LoginPresenter(this);
        btn_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = et_reg_name.getText().toString();
                String pwd = et_reg_pwd.getText().toString();
                if (TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
                    Toast.makeText(RegistActivity.this, "输入内容不能为空", Toast.LENGTH_SHORT).show();
                }else{
                    loginPresenter.registPre(name,pwd);
                }
            }
        });
        text_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(RegistActivity.this,MainActivity.class);
                startActivity(intent);
                finish();
            }
        });

    }

    @Override
    public void showMsg(final String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                RegistBean registBean = gson.fromJson(msg, RegistBean.class);
                String status = registBean.getStatus();
                if (status.equals("0000")){
                    Intent intent = new Intent(RegistActivity.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }else{
                    Toast.makeText(RegistActivity.this, registBean.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    @Override
    public void jumpActivity() {

    }
}

成功!!!

猜你喜欢

转载自blog.csdn.net/weixin_43882999/article/details/85561523