Android使用MVP实现登录注册

一.定义一个类(以下用到的接口)

public class API {
    public static final String LOGIN_URL = "http://www.zhaoapi.cn/user/login";//登录接口
    public static final String REG_URL = "http://www.zhaoapi.cn/user/reg";//注册接口
}

二.写一个接口

public interface LoginCallBack {
    void onLoginSuccess(String result);

    void onLoginFailer(String msg);
}

三.view层

public interface ILoginView {
    //登录成功
    void onSuccess(String result);

    //登录失败
    void onFailer(String error);

}

四.Model层(处理数据)

public class LoginModel {
	//这里的User类,里面包含的是姓名和密码
    public void login(final User user, final LoginCallBack loginCallBack) {
        HttpUtils httpUtils = new HttpUtils();
        httpUtils.getpath(API.LOGIN_URL + "?mobile=" + user.getName() + "&&password=" + user.getPass());
        httpUtils.getHelpListener(new HttpUtils.GetData() {
            @Override
            public void setString(String s) {
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(s, UserBean.class);
                if (userBean.getCode().equals("0")) {
                    loginCallBack.onLoginSuccess("登陆成功");
                } else {
                    loginCallBack.onLoginFailer("登录失败");
                }
            }
        });
    }
}

五.Presenter层

public class LoginPresenter {
    private ILoginView iLoginView;
    private LoginModel loginModel;

    public LoginPresenter(ILoginView iLoginView) {
        this.iLoginView = iLoginView;
        loginModel = new LoginModel();
    }

    public void login(User user) {
        loginModel.login(user, new LoginCallBack() {
            @Override
            public void onLoginSuccess(String result) {
                iLoginView.onSuccess("登陆成功");
            }

            @Override
            public void onLoginFailer(String msg) {
                iLoginView.onFailer("登录失败");
            }
        });
    }
}

六.Activity层

public class TwoActivity extends AppCompatActivity implements ILoginView {

    private LoginPresenter loginPresenter;
    private EditText name;
    private EditText pwd;
    private Button login_bt;
    private TextView register;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        //初始化控件
        name = (EditText) findViewById(R.id.name);
        pwd = (EditText) findViewById(R.id.pwd);
        login_bt = (Button) findViewById(R.id.login_bt);
        loginPresenter = new LoginPresenter(this);
        register = (TextView) findViewById(R.id.register);
        //点击登录
        login_bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name1 = name.getText().toString().trim();
                String pwd1 = pwd.getText().toString().trim();
                //判空
                if (TextUtils.isEmpty(name1) && TextUtils.isEmpty(pwd1)) {
                    Toast.makeText(TwoActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
                } else {
                    loginPresenter.login(new User(name1, pwd1));
                }
            }
        });

        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(TwoActivity.this, RegisterActivity.class));
            }
        });

    }

    @Override
    public void onSuccess(String result) {
        SharedPreferences sharedPreferences = getSharedPreferences("login", Context.MODE_PRIVATE);
        SharedPreferences.Editor edit = sharedPreferences.edit();
        edit.putInt("login", 0);
        edit.commit();
        Intent intent = new Intent(this, ShowActivity.class);
        startActivity(intent);
        finish();

        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
        //startActivity(new Intent(TwoActivity.this, ShowActivity.class));
    }

    @Override
    public void onFailer(String error) {
        Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();

    }
}

七.注册跟登录代码一致

猜你喜欢

转载自blog.csdn.net/wzj_8899174/article/details/83961445