public class LoginActivity extends AppCompatActivity implements View.OnClickListener,ILoginView{
private Loginpresenter mloginpresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.login).setOnClickListener(this);
mloginpresenter = new Loginpresenter(this);
}
//登录按钮
@Override
public void onClick(View v) {
//点击登录
mloginpresenter.login("account","password");
}
//联网成功
@Override
public void onLoginSuccess(final LoginBean loginBean) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(LoginActivity.this, "登录成功"+loginBean.getData().getMobile(), Toast.LENGTH_SHORT).show();
}
});
}
//联网失败
@Override
public void onLoginFaild(final String error) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(LoginActivity.this, "登录失败了"+error, Toast.LENGTH_SHORT).show();
}
});
}
}
ILoginView
public interface ILoginView {
//定义一个成功的方法
void onLoginSuccess(LoginBean loginBean);
//定义一个失败的方法
void onLoginFaild(String error);
}
Loginpresenter
public class Loginpresenter {
private final LoginModel mloginModel;
private final ILoginView miLoginView;
//生成构造函数
public Loginpresenter(ILoginView loginView) {
miLoginView = loginView;
//创建LoginModel 类
mloginModel = new LoginModel();
}
//定义一个登录的方法
public void login(String account, String password){
//调用 LoginModel 里 login 方法
mloginModel.login(account, password, new LoginModel.IloginModelCallback() {
@Override
public void onLoginSuccess(LoginBean loginBean) {
if (miLoginView!=null){
miLoginView.onLoginSuccess(loginBean);
}
}
@Override
public void onLoginFaild(String error) {
if (miLoginView!=null){
miLoginView.onLoginFaild(error);
}
}
});
}
}
LoginModel
public class LoginModel {
//定义一个登录的方法
public void login(String account,String password,final IloginModelCallback iLoginModelCallback){
//创建一个okhttpclient
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.build();
//通过表单的形式.构建一个requestBody,通过添加 key-value 上传参数
RequestBody requestBody = new FormBody.Builder()
.add("source","android")
.add("mobile",account)
.add("password",password)
.build();
//通过我们构造的requestBody,去构造一个Request
final Request request = new Request.Builder()
.url("https://www.zhaoapi.cn/user/login")
.post(requestBody)
.build();
//使用okhttpClient对象执行new Call, 传入一个Request ,去构造一个call
Call call = okHttpClient.newCall(request);
//使用异步
call.enqueue(new Callback(){
@Override
public void onFailure(Call call, IOException e) {
//失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//联网成功
String json = response.body().string();
// 创建gson 并调用bean
LoginBean loginBean = new Gson().fromJson(json, LoginBean.class);
//得到里面的数据
String code = loginBean.getCode();
String msg = loginBean.getMsg();
if ("0".equalsIgnoreCase(code)){
//登录成功
if (iLoginModelCallback!=null){
iLoginModelCallback.onLoginSuccess(loginBean);
}
}else {
if (iLoginModelCallback!=null){
iLoginModelCallback.onLoginFaild(msg);
}
}
}
});
}
public interface IloginModelCallback{
void onLoginSuccess(LoginBean loginBean);
void onLoginFaild(String error);
}
}
public class LoginBean {
private String msg;
private String code;
private DataBean data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
private Object age;
private String appkey;
private String appsecret;
private String createtime;
private Object email;
private Object fans;
private Object follow;
private Object gender;
private Object icon;
private Object latitude;
private Object longitude;
private String mobile;
private Object money;
private Object nickname;
private String password;
private Object praiseNum;
private String token;
private int uid;
private Object userId;
private String username;
public Object getAge() {
return age;
}
public void setAge(Object age) {
this.age = age;
}
public String getAppkey() {
return appkey;
}
public void setAppkey(String appkey) {
this.appkey = appkey;
}
public String getAppsecret() {
return appsecret;
}
public void setAppsecret(String appsecret) {
this.appsecret = appsecret;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public Object getEmail() {
return email;
}
public void setEmail(Object email) {
this.email = email;
}
public Object getFans() {
return fans;
}
public void setFans(Object fans) {
this.fans = fans;
}
public Object getFollow() {
return follow;
}
public void setFollow(Object follow) {
this.follow = follow;
}
public Object getGender() {
return gender;
}
public void setGender(Object gender) {
this.gender = gender;
}
public Object getIcon() {
return icon;
}
public void setIcon(Object icon) {
this.icon = icon;
}
public Object getLatitude() {
return latitude;
}
public void setLatitude(Object latitude) {
this.latitude = latitude;
}
public Object getLongitude() {
return longitude;
}
public void setLongitude(Object longitude) {
this.longitude = longitude;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Object getMoney() {
return money;
}
public void setMoney(Object money) {
this.money = money;
}
public Object getNickname() {
return nickname;
}
public void setNickname(Object nickname) {
this.nickname = nickname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Object getPraiseNum() {
return praiseNum;
}
public void setPraiseNum(Object praiseNum) {
this.praiseNum = praiseNum;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public Object getUserId() {
return userId;
}
public void setUserId(Object userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.day08_mvp04.view.activity.LoginActivity">
<Button
android:layout_centerInParent="true"
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="login"
/>
</RelativeLayout>
//解耦
protected abstract void initModel(); void Destroy(){ view=null; }