**MainActivity.java**
package muhanxi.mvpdemo1;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends Activity implements LoginView{
@BindView(R.id.phone)
EditText phone;
@BindView(R.id.password)
EditText password;
@BindView(R.id.login)
Button login;
private LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
// this 代表 LoginView
presenter = new LoginPresenter(this);
}
// 登陆按钮的点击事件
@OnClick(R.id.login)
public void onClick() {
presenter.login(phone.getText().toString(),password.getText().toString());
}
@Override
public void phoneEmpty() {
Toast.makeText(this, "phone is empty", Toast.LENGTH_SHORT).show();
}
@Override
public void passwordEmpty() {
Toast.makeText(this, "password is empty", Toast.LENGTH_SHORT).show();
}
@Override
public void loginSuccess(Object object) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "loginSuccess", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void loginFailed(int code) {
Toast.makeText(this, "loginFailed", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
// / 页面关闭 销毁 Presenter 中所持有的LoginView 对象
presenter.detach();
}
}
**LoginView**
package muhanxi.mvpdemo1;
/**
* Created by muhanxi on 17/11/2.
*/
public interface LoginView {
// 手机号码为空
public void phoneEmpty();
// 密码为空
public void passwordEmpty();
// 登陆成功
public void loginSuccess(Object object);
// 登陆失败
public void loginFailed(int code);
}
**LoginModel**
package muhanxi.mvpdemo1;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by muhanxi on 17/11/2.
*/
public class LoginModel {
public void login(String phone, String password, final ModelCallBack callBack){
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody body = new FormBody.Builder()
.add("pscid","39")
.add("page","1")
.build();
Request request = new Request.Builder().url("http://120.27.23.105/product/getProducts")
.post(body)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callBack.failed(1);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string() ;
// callBack 接口回调 到presenter
callBack.success(result);
}
});
}
}
**LoginPresenter**
package muhanxi.mvpdemo1;
import android.text.TextUtils;
/**
* Created by muhanxi on 17/11/2.
*/
public class LoginPresenter {
private LoginView loginView ;
private LoginModel loginModel ;
public LoginPresenter(LoginView loginView){
this.loginView = loginView;
loginModel = new LoginModel();
}
public void detach(){
this.loginView = null;
}
public void login(String phone,String password){
if(TextUtils.isEmpty(phone)){
loginView.phoneEmpty();
return;
}
if(TextUtils.isEmpty(password)){
loginView.passwordEmpty();
return;
}
loginModel.login(phone, password, new ModelCallBack() {
@Override
public void success(String data) {
loginView.loginSuccess(data);
}
@Override
public void failed(int code) {
loginView.loginFailed(code);
}
});
}
}
**ModelCallBack**
package muhanxi.mvpdemo1;
/**
* Created by muhanxi on 17/11/2.
*/
public interface ModelCallBack {
public void success(String data);
public void failed(int code);
}
接口回调
最新推荐文章于 2022-11-03 18:11:06 发布