mvp模式

来源:互联网 发布:推荐淘宝卖高仿鞋的店 编辑:程序博客网 时间:2024/06/05 16:56

1.MainActivity.Java



public class Main2Activity extends AppCompatActivity implements LoginView{


    private Presenter pre;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //得到控件
        final EditText username= (EditText) findViewById(R.id.username);
        final EditText password= (EditText) findViewById(R.id.password);
        Button login= (Button) findViewById(R.id.login);
        pre = new Presenter(this);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String user=username.getText().toString().trim();
                String pwd=password.getText().toString().trim();
                //调用登录的方法
                pre.login(user,pwd);
            }
        });
    }


    @Override
    public void usernamenull() {
        Toast.makeText(this, "用户名为空", Toast.LENGTH_SHORT).show();
    }


    @Override
    public void pwdnull() {
        Toast.makeText(this, "密码为空", Toast.LENGTH_SHORT).show();
    }


    @Override
    public void succenful() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(Main2Activity.this, "成功", Toast.LENGTH_SHORT).show();
            }
        });
    }
    @Override
    public void onDetachedFromWindow() {
        pre.detch();


    }
}


2.Presenter层



public class Presenter {
    private LoginView loginView;
    private ModelMvp modelMvp;


    public Presenter(LoginView loginView) {
        this.loginView = loginView;
        modelMvp = new ModelMvp();
    }


    public void login(String username, String password) {
        if (TextUtils.isEmpty(username)) {
            loginView.usernamenull();
            return;
        }
        if (TextUtils.isEmpty(password)) {
            loginView.pwdnull();
            return;
        }


        //登录成功的时候
        modelMvp.login(username, password, new ModelMvp.MvpOnChilk() {
            @Override
            public void Onchilk(String result) {
                //调用view中的成功的方法
                loginView.succenful();
            }
        });




    }
    public void detch(){
        loginView=null;
    }
}

3、model层


public class ModelMvp {
    //请求数据
    public  void login(String username, String password, final MvpOnChilk mvpOnChilk){
        //请求网络
        OkHttpClient client=new OkHttpClient();
        final Request request=new Request.Builder().url("http://qhb.2dyt.com/Bwei/login?username=muhanxi&password=111&postkey=1503d").build();
        Call call=client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
            }


            @Override
            public void onResponse(Response response) throws IOException {
                //成功的数据返回到view层界面,需要用到接口
                //判断接口是否为空
                mvpOnChilk.Onchilk(response.body().string());
            }
        });
    }
    public interface MvpOnChilk{
        public  void Onchilk(String result);
    }
}


4.view层


public interface LoginView {
    //密码用户名为空
    public  void usernamenull();
    public void pwdnull();
    public  void succenful();
}



原创粉丝点击