注册 契约类mvp

契约类

package di;

public interface IContract {
   public interface Imodl{
   public interface OnCallBack{
       void ShowData(String showmsg);
   }
   void requestData(String tel, String pass, OnCallBack onCallBack);
   }

   public interface Iview{
       void shouData(String showmsg);
   }


   public interface Ipresenter<Iview>{
       void attchview(Iview iview);
       void detachview(Iview iview);
       void requestinfo(String tel, String pass);
   }
}
M层

package di;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Response;
import util.HttpUtil;

public class ImodelImpl implements IContract.Imodl{
    private String url="http://www.zhaoapi.cn/user/reg ";
    @Override
    public void requestData(String tel, String pass, final OnCallBack onCallBack) {
      if (tel.equals("")||pass.equals("")){
        onCallBack.ShowData("用户名密码不能为空");

      }else {
        FormBody formBody=new FormBody.Builder()
                .add("mobile",tel)
                .add("password",pass)
                .build();

        HttpUtil.getinstance().postOK(url, formBody, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                String s = e.getMessage().toString();
                onCallBack.ShowData(s);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String msgs = response.body().string();
                onCallBack.ShowData(msgs);
            }
        });
    }}
}
P层

package di;

import java.lang.ref.WeakReference;

public class IpresenterImpl implements IContract.Ipresenter<IContract.Iview>{
    private IContract.Iview iview;
    private IContract.Imodl imodl;
    WeakReference<IContract.Iview> viewReferenc;
    WeakReference<IContract.Imodl> modelReferenc;
    @Override
    public void attchview(IContract.Iview iview) {
    this.iview=iview;
    imodl=new ImodelImpl();
    //软引用包裹
    viewReferenc=new WeakReference<>(iview);
    modelReferenc=new WeakReference<>(imodl);
    }

    @Override
    public void detachview(IContract.Iview iview) {
    viewReferenc.clear();
    modelReferenc.clear();
    }

    @Override
    public void requestinfo(String tel, String pass) {
    imodl.requestData(tel,pass,new IContract.Imodl.OnCallBack() {
        @Override
        public void ShowData(String showmsg) {
        iview.shouData(showmsg);
        }
    });
    }
}
V层

package com.baway.erzhoulx;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import di.IContract;
import di.IpresenterImpl;

public class MainActivity extends AppCompatActivity implements IContract.Iview{

    @BindView(R.id.ed1)
    EditText ed1;
    @BindView(R.id.ed2)
    EditText ed2;
    @BindView(R.id.bu)
    Button bu;
    private IContract.Ipresenter<IContract.Iview> ipresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
       ipresenter=new IpresenterImpl();
       ipresenter.attchview(this);
    }

    @OnClick(R.id.bu)
    public void onViewClicked() {
        String tel = ed1.getText().toString();
        String pass = ed2.getText().toString();
        ipresenter.requestinfo(tel,pass);
    }

    @Override
    public void shouData(final String showmsg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this,showmsg,Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(MainActivity.this,Login.class);
                startActivity(intent);
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ipresenter.detachview(this);
    }
}
 

猜你喜欢

转载自blog.csdn.net/qq_41880253/article/details/81610608
今日推荐