代码架构 MVC
model:UserLoginModel.java
package com.gordon.androidmvcmvp.mvc.mode;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.gordon.androidmvcmvp.mvc.bean.UserLoginBean;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
public class UserLoginModel {
public void login(String username, String password, final OnNetResponseListener listener) {
//本地对输入情况做校验,都不为空的时候才请求服务器
boolean validateOk = validateInput(username, password);
if (validateOk) {
String url = "http://www.loghare.com/Shop/customer/customer_userLogin.html";
OkHttpUtils
.post()
.url(url)
.addParams("uname", username)
.addParams("pwd", password)
.build()
.execute(new StringCallback() {
@Override
public void onError(okhttp3.Call call, Exception e, int id) {
listener.onNetResponseError(e.getMessage());
}
@Override
public void onResponse(String response, int id) {
Gson gson = new Gson();
UserLoginBean userLoginBean = gson.fromJson(response, UserLoginBean.class);
listener.onNetResponseOk(userLoginBean);
}
});
} else {
listener.onNetResponseError("invisi");
}
}
//校验输入是否为空
private boolean validateInput(String username, String password) {
if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
return true;
} else {
return false;
}
}
public interface OnNetResponseListener {
void onNetResponseOk(UserLoginBean userLoginBean);
void onNetResponseError(String msg);
}
}
view-controller LoginActivityMvc.java
package com.gordon.androidmvcmvp.mvc;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telecom.Call;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.gson.Gson;
import com.gordon.androidmvcmvp.LoginActivity;
import com.gordon.androidmvcmvp.R;
import com.gordon.androidmvcmvp.UserDetailActivity;
import com.gordon.androidmvcmvp.mvc.bean.UserLoginBean;
import com.gordon.androidmvcmvp.mvc.mode.UserLoginModel;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
/**
* Activity是万能的
* 1、控件相关的代码 视图层相关的代码
* 2、业务逻辑相关的代码
* 3、数据相关的代码
* <p>
* <p>
* M:Model 模型层,产生数据
* V:View 视图层
* C:Controller 逻辑控制层
*/
public class LoginActivityMvc extends AppCompatActivity implements View.OnClickListener {
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = (EditText) findViewById(R.id.etUsername);
etPassword = (EditText) findViewById(R.id.etPassword);
btnLogin = (Button) findViewById(R.id.btnLogin);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
btnLogin.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btnLogin:
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
login(username, password);
break;
}
}
private void login(String username, String password) {
progressBar.setVisibility(View.VISIBLE);
UserLoginModel userLoginModel = new UserLoginModel();
userLoginModel.login(username, password, new UserLoginModel.OnNetResponseListener() {
@Override
public void onNetResponseOk(UserLoginBean userLoginBean) {
//ui显示
progressBar.setVisibility(View.GONE);
if (userLoginBean.getStatus() == 200) {
//登录成功,跳转界面
Toast.makeText(LoginActivityMvc.this, "欢迎回来:" + userLoginBean.getUser().getUsername(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.putExtra("username", user