MVP
M層
public class LogingModelImpl { private OkHttpUtils okHttpUtils; private Context context; public void Login(String mobile, String pwd, final ILoginModel iLoginModel) { okHttpUtils = OkHttpUtils.getInstance(context); HashMap<String, String> params = new HashMap<>(); params.put("mobile", mobile); params.put("password", pwd); okHttpUtils.post(Constant.LOGIN, params, new OkHttpUtils.ICallback() { @Override public void getData(String result) { Gson gson = new Gson(); LoginBean loginBean = gson.fromJson(result, LoginBean.class); iLoginModel.success(loginBean); } }); } public interface ILoginModel { void success(LoginBean loginBean); void failure(Call call, IOException e); } }
P層
public class LoginPresenter { private ILoginView iLoginView; private LogingModelImpl mLoginModelImpl; public LoginPresenter(ILoginView iLoginView) { this.iLoginView = iLoginView; mLoginModelImpl = new LogingModelImpl(); } public void login(String mobile, String pwd) { if (!Common.isMobileNO(mobile)) { iLoginView.mobileError(); return; } if (pwd.length() < 6) { iLoginView.pwdError(); } mLoginModelImpl.Login(mobile, pwd, new LogingModelImpl.ILoginModel() { @Override public void success(LoginBean loginBean) { iLoginView.loginSuccess(loginBean); } @Override public void failure(Call call, IOException e) { iLoginView.loginError("e"); } }); }
public void onDetach(){ iSearchView = null;
}
}V層
public class LoginActivity extends BaseActivity implements ILoginView, View.OnClickListener { private TextView fanhui; private TextView zhanghaodenglu; private TextView shoujidenglu; private EditText name; private EditText password; private Button login_button; private TextView zhuce; private TextView wangjimima; private ImageView weixin; private ImageView qq; private LoginPresenter loginPresenter; private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); initData(); } private void initData() { loginPresenter = new LoginPresenter(this); } private void initView() { fanhui = findViewById(R.id.login_X); fanhui.setOnClickListener(this); zhanghaodenglu = findViewById(R.id.login_zhanghaodenglu); zhanghaodenglu.setOnClickListener(this); shoujidenglu = findViewById(R.id.login_shoujidenglu); shoujidenglu.setOnClickListener(this); name = findViewById(R.id.login_name); password = findViewById(R.id.login_password); login_button = findViewById(R.id.login_button); login_button.setOnClickListener(this); wangjimima = findViewById(R.id.login_wangjimima); wangjimima.setOnClickListener(this); zhuce = findViewById(R.id.login_zhuce); zhuce.setOnClickListener(this); weixin = findViewById(R.id.login_weixin); weixin.setOnClickListener(this); qq = findViewById(R.id.login_qq); qq.setOnClickListener(this); } @Override public void loginSuccess(LoginBean loginBean) { Toast.makeText(this, "登錄成功", Toast.LENGTH_SHORT).show(); //記錄登錄狀態 //獲取sp對象 sp = getSharedPreferences("User", Context.MODE_PRIVATE); SharedPreferences.Editor edit = sp.edit(); edit.putString("mobile", loginBean.getData().getMobile()); edit.putString("token", loginBean.getData().getToken()); edit.putString("uid", loginBean.getData().getUid() + ""); edit.putBoolean("have", true); edit.commit(); } @Override public void loginError(String mag) { Toast.makeText(this, "登錄失敗", Toast.LENGTH_SHORT).show(); } @Override public void mobileError() { Toast.makeText(this, "手機號碼輸入錯誤", Toast.LENGTH_SHORT).show(); } @Override public void pwdError() { Toast.makeText(this, "密碼不得小於六位", Toast.LENGTH_SHORT).show(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.login_X: finish(); break; case R.id.login_button: loginPresenter.login(name.getText().toString(), password.getText().toString()); //跳轉 Intent data = new Intent(LoginActivity.this, HomePagerActivity.class); startActivity(data); finish(); break; case R.id.login_zhuce: Intent intent1 = new Intent(LoginActivity.this, ZhuceActivity.class); startActivity(intent1); break; case R.id.login_weixin: break; case R.id.login_qq: break; } } }
V層接口
public interface ILoginView { //登錄成功 void loginSuccess(LoginBean loginBean); //登錄失敗 void loginError(String mag); void mobileError(); void pwdError(); }