Mvp

来源:互联网 发布:印度电影票房数据 编辑:程序博客网 时间:2024/06/06 00:18


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);
            }
        });




    }

}



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);

}


package muhanxi.mvpdemo1;

/**
 * Created by muhanxi on 17/11/2.
 */

public interface ModelCallBack {

    public void success(String data);
    public void failed(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);





            }
        });





    }




}


MainActivity类


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();
    }
}