model层
public class LoginModelImp implements LoginModel {
@Overridepublic void login(String accoutm, String pwd, OnNetListener onNetListener) {
Map<String, String> params = new HashMap<>();
params.put("mobile", accoutm);
params.put("password", pwd);
OkhttpUtils.getInstance().login(Api.LGOIN_URL, params, onNetListener);
}
}
presenter层
public class LoginPresenterImp implements LoginPresenter {
private LoginView loginView;
private final LoginModelImp loginModelImp;
public LoginPresenterImp(LoginView loginView) {
//绑定
this.loginView = loginView;
//初始化model层的对象
loginModelImp = new LoginModelImp();
}
//登录
@Override
public void login() {
//该方法不做真正的业务逻辑即不写请求网络的方法,交给Model层去处理
//获取用户名和密码
String accout = loginView.getAccout();
String pwd = loginView.getPwd();
if (TextUtils.isEmpty(accout) || TextUtils.isEmpty(pwd)) {
//提示用户输入账号密码不正确
loginView.showMsg("输入账号密码不正确");
return;
}
//进行网络请求
loginView.showLoading();
loginModelImp.login(accout, pwd, new OnNetListener() {
@Override
public void onSuccess(String result) {
if (loginView == null) {
return;
}
loginView.dismissLoading();
UserBean userBean = new Gson().fromJson(result, UserBean.class);
loginView.showData(userBean.getData().getMobile());
}
@Override
public void onFailed(Exception e) {
if (loginView == null) {
return;
}
loginView.dismissLoading();
}
});
}
//解绑
@Override
public void detach() {
if (loginView != null) {
loginView = null;
}
}
}
view层
/**
* 以MVP的角度来看,Actiivty对应的就是V(view)
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener,LoginView {
Handler handler = new Handler();
private LoginPresenterImp loginPresenterImp;
/**
* 请输入账号
*/
private EditText mEtAccount;
/**
* 请输入密码
*/
private EditText mEtPwd;
/**
* 登录
*/
private Button mBtLogin;
private TextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
loginPresenterImp = new LoginPresenterImp(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
loginPresenterImp.detach();
}
private void initView() {
mEtAccount = (EditText) findViewById(R.id.etAccount);
mEtPwd = (EditText) findViewById(R.id.etPwd);
mBtLogin = (Button) findViewById(R.id.btLogin);
mBtLogin.setOnClickListener(this);
mTv = (TextView) findViewById(R.id.tv);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.btLogin:
//登录
loginPresenterImp.login();
break;
}
}
@Override
public String getAccout() {
return mEtAccount.getText().toString();
}
@Override
public String getPwd() {
return mEtPwd.getText().toString();
}
@Override
public void showLoading() {
//进度显示
Toast.makeText(MainActivity.this,"加载中...",Toast.LENGTH_SHORT).show();
}
@Override
public void dismissLoading() {
//关闭进度显示
Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_SHORT).show();
}
@Override
public void showData(final String phone) {
//显示号码
/* runOnUiThread(new Runnable() {
@Override
public void run() {
mTv.setText(phone);
}
});*/
mTv.setText(phone);
}
/**
* 给用户提示一些信息,比如正确的,或者错误的
* @param str
*/
@Override
public void showMsg(String str) {
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
}