MVP的简单使用

布局样式

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/edit_01" />
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/edit_02" />
<Button
    android:text="登录"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/btn"
    />
Activity 主页面

public class MainActivity extends AppCompatActivity implements V_mvp {

    private EditText editText1;
    private EditText editText2;
    private Button btn;
    private P_mvp p_mvp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText1 = (EditText) findViewById(R.id.edit_01);
        editText2 = (EditText) findViewById(R.id.edit_01);
        btn = (Button) findViewById(R.id.btn);

        p_mvp = new P_mvp(this);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                p_mvp.denglu(editText1.getText().toString(),editText2.getText().toString());
            }
        });

    }

    @Override
    public void sjh() {
        Toast.makeText(this, "手机号不能为空", Toast.LENGTH_SHORT).show();
    }

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

    @Override
    public void cg(Object object) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void sb(int code) {
        Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
    }

}
P_Presenter页面

public class P_mvp {
    private final V_mvp v_mvp;
    private final M_mvp m_mvp;

    public P_mvp(V_mvp v_mvp) {
        this.v_mvp = v_mvp;
        m_mvp = new M_mvp();
    }

    public void denglu(String sjh, String mm) {
        if(TextUtils.isEmpty(sjh)){
            v_mvp.sjh();
            return;
        }

        if(TextUtils.isEmpty(mm)){
            v_mvp.mm();
            return;
        }

        m_mvp.chengong(sjh,mm, new ChengGongShiBai() {
            @Override
            public void chenggong(String data) {
                v_mvp.cg(data);
            }

            @Override
            public void shibai(int code) {
                v_mvp.sb(code);
            }
        });

    }
}
V_View页面_接口类

public interface V_mvp {
    // 手机号码为空
    public void sjh();
    //    密码为空
    public void mm();
    // 登陆成功
    public void cg(Object object);
    //  登陆失败
    public void sb(int code);

}
M_Model页面

public class M_mvp {
    public void chengong(String sjh, String mm, final ChengGongShiBai chengbai) {
        OkHttpClient okHttpClient = new OkHttpClient();

        RequestBody body = new FormBody.Builder()
                .add("pscid","39")
                .add("page","1")
                .build();
        final 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) {
                chengbai.shibai(1);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string() ;
                chengbai.chenggong(result);
            }
        });

    }
}
ModelCallBack接口页面

public interface ChengGongShiBai {
    public void chenggong(String data);
    public void shibai(int code);
}



猜你喜欢

转载自blog.csdn.net/weikai_/article/details/78471384