Android架构之MVP

注:此MVP为注册登录 有其余需要请改值

1.契约类(接口绑定model view prensenter)

	public interface ILogcontract {
	//V层	
    public interface ILogView{
        //回显数据
        public void showdata(String message);

    }
    //P层
    public interface ILogPresenter<IRegView>{
	    //绑定
        public void attachview(IRegView iRegView);
        //解绑
        public void detachview(IRegView iRegView);
        //数据获取
        public void requestdata(String name, String pwd);

    }
    //M层
    public interface ILogMode{
        //请求数据
        public void contel(String name, String pwd, Callback callback);
        //接口回调
        public interface Callback {

            public void responsetdata(String message);

        }

    }

	}

2.Model层

public class Regmodel implements IRegcontract.IRegModel {

    @Override
    public void contel(String name, String pwd, final Callback callback) {
	//接口
        String jk=MyInterface.Zjq_Reg+"?phone="+name+"&pwd="+pwd;
    //表单
        FormBody formBody=new FormBody.Builder().build();
    //请求OKhttp方法    
        NetOkhttp okhttp=NetOkhttp.getInstance();
    //OKhttp中post的方法
        okhttp.post(formBody, jk, new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                String message = e.getMessage();
                callback.responsetdata(message);
            }

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

    }
	}

3.View层

ILogcontract.ILogView {

    @BindView(R.id.dl_yhm)
    EditText dlYhm;
    @BindView(R.id.dl_mima)
    EditText dlMima;
    @BindView(R.id.dl_btn)
    Button dlBtn;
    private LogPresenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loginn);
        ButterKnife.bind(this);
        //找id,实例化P层
        presenter = new LogPresenter();
        //绑定
        presenter.attachview(this);
    }

    @OnClick(R.id.dl_btn)
    public void onViewClicked() {
        //点击事件,如果没有点击,切记要调用
        presenter.requestdata(dlYhm.getText().toString().trim(),dlMima.getText().toString().trim());
    }

    @Override
    public void showdata(final String message) {
		//开启子线程
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
            //解析加跳转
                Gson gson=new Gson();
                JsonBeann beann = gson.fromJson(message, JsonBeann.class);
                int status = beann.getStatus();
                if (status==0000){

                    Intent in=new Intent(LoginActivity.this,ShowActivity.class);
                    startActivity(in);

                }
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解绑
        presenter.detachview(this);
    }
	}

4.Prensenter层

	public class Prensenter implements IContract.IPrenster<IContract.IView> {
	IContract.IView iView;
	private SoftReference<IContract.IView> reference;
	private Model model;

	@Override
	public void attachView(IContract.IView iView) {
    this.iView=iView;

    //软引用包裹
    reference = new SoftReference<>(iView);

    //创建M层
    model = new Model();
	}

	@Override
	public void deatchView(IContract.IView iView) {
    reference.clear();
	}

	@Override
	public void requestData() {
    model.requestInternet(new IContract.IModel.CallBack() {
        @Override
        public void responseData(String responseData) {
            iView.showData(responseData);
        }
    });
    }

创作不易,仅供参考,如有问题,评论留言,如有雷同,纯属巧合!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值