Activity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import zhao.com.modelviewp.R;
import zhao.com.modelviewp.bean.Result;
import zhao.com.modelviewp.bean.User;
import zhao.com.modelviewp.presenter.MyPresenter;
import zhao.com.modelviewp.view.IBaseView;
public class MainActivity extends AppCompatActivity {
TextView textView;
private MyPresenter myPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
textView = findViewById(R.id.textView);
//创建presenter
myPresenter = new MyPresenter();
//绑定IBaseView
myPresenter.bindBaseView(new LoginCall());
}
//button点击事件
public void login(View view){
//调用presenter层
myPresenter.login("张三","123");
}
//实现view层IBaseView接口接收presenter处理数据
class LoginCall implements IBaseView<User>{
//请求成功
@Override
public void success(User data) {
textView.setText(data.getName()+" "+data.getAge()+" "+data.getToken());
}
//请求失败
@Override
public void fail(Result result) {
textView.setText(result.getMsg());
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//解除绑定,防止内存碎片无法释放
myPresenter.unbindBaseView();
}
}
View层 IBaseView 接口类
import zhao.com.modelviewp.bean.Result;
public interface IBaseView<T> {
void success(T t);
void fail(Result result);
}
Presenter层 MyPresenter
import android.os.Handler;
import android.os.Message;
import zhao.com.modelviewp.bean.Result;
import zhao.com.modelviewp.bean.User;
import zhao.com.modelviewp.model.LoginModel;
import zhao.com.modelviewp.view.IBaseView;
public class MyPresenter {
private IBaseView iBaseView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Result<User> userResult = (Result<User>) msg.obj;
if (userResult.getStatus() == 0) {
iBaseView.success(userResult.getT());
}else {
iBaseView.fail(userResult);
}
}
};
public void login(final String name, final String pwd) {
//创建子线程请求model层数据
new Thread(new Runnable() {
@Override
public void run() {
//调用model层数据
Result<User> userResult = new LoginModel().loginData(name,pwd);
//通过Handler发送出去
Message message = handler.obtainMessage();
message.obj = userResult;
handler.sendMessage(message);
}
}).start();
}
//绑定IBaseView
public void bindBaseView(IBaseView iBaseView) {
this.iBaseView = iBaseView;
}
//解除绑定
public void unbindBaseView() {
iBaseView = null;
}
}
Model层 LoginModel
import zhao.com.modelviewp.bean.Result;
import zhao.com.modelviewp.bean.User;
public class LoginModel {
public Result<User> loginData(String name, String pwd) {
Result<User> userResult = new Result<>();
userResult.setStatus(0);
userResult.setMsg("请求成功!");
User user = new User();
user.setId(100);
user.setAge(20);
user.setName("啊哈");
user.setToken("呃呃呃");
userResult.setT(user);
return userResult;
}
}
封装类 Result
public class Result<T> {
private int status;
private String msg;
private T t;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
User
public class User {
private int id;
private String name;
private int age;
private String token;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}