mvp登录注册 (不一样的方法)

接口
public interface IMainView extends IBaseView{
    //成功
    public void callBackSuccess(NewsBean newsBean);
    //失败
    public void callBackOnerror(String err);
}
public interface IBaseView {}

presenter类

public class IMainPresenter extends IBasePresenter<IMainView> implements HttpUtils.CallbackData<NewsBean>{
    private final HttpUtils httpUtils;

    public IMainPresenter(){
        httpUtils = HttpUtils.getInstance();
        httpUtils.setCallbackInstance(this);
    }
    @Override
    public void onReponse(NewsBean newsBean) {
        getView().callBackSuccess(newsBean);
    }

    @Override
    public void onFailure(IOException e) {

    }

    public void Login(String path, String phones, String pwds) {
        httpUtils.postData(path,phones,pwds);
        Log.e("输出", "Login: " );
    }

    public void register(String path, String phones, String pwds) {
        httpUtils.postData(path,phones,pwds);
        Log.e("输出","register:");
    }

}

BasePresenter

public class IBasePresenter<V> {
    private V mview;
    public void setView(V v){
        this.mview = v;
    }
    public void detachView(){
        this.mview = null;
    }
    public V getView(){
        return mview;
    }
}

okhttpUtils

public class HttpUtils <T>{
    //单列模式
    private static HttpUtils httpUtils;

    public static HttpUtils getInstance(){
        if(httpUtils==null){
            return new HttpUtils();
        }else{
            return httpUtils;
        }
    }

    private CallbackData callback;

    private HttpUtils(){}
    public void setCallbackInstance(CallbackData callbackInstance){
        this.callback = callbackInstance;
    }
    private CallbackData callbackData;
    public void setCallback(CallbackData callback){
        this.callbackData = callback;
    }
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            T obj = (T) msg.obj;
            callbackData.onReponse(obj);
        }
    };
    //okhttp get请求
    //public void getData(String url,String username,String password){}
    //okhttp post请求 封装
    public void postData(String url,String phones,String pwds){
        //获取okheepclient对象
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(5, TimeUnit.SECONDS)
                .readTimeout(5, TimeUnit.SECONDS)
                .build();
        //获取forbody对象
        FormBody formBody = new FormBody.Builder()
                .add("phone",phones)
                .add("pwd",pwds)
                .build();
        //获取一个request对象
        Request request = new Request.Builder().url(url).post(formBody).build();
        Log.e("输出", "onFailure: " );
        //获取一个call对象
        Call call = okHttpClient.newCall(request);
        //异步请求
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("输出", "onFailure: "+call.toString() );
                //接口回掉
                callback.onFailure(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                NewsBean newsBean = gson.fromJson(string, NewsBean.class);
                callback.onReponse(newsBean);
            }
        });
    }

    public void getData(String url, Class<NewsBean> newsBeanClass) {

    }

    public interface CallbackData<D>{
        void onReponse(D d);
        void onFailure(IOException e);
    }
}

HomeActivity

 

HomeActivity 注册

 

public class HomeActivity extends AppCompatActivity implements IMainView {
    @BindView(R.id.username)
    EditText username;
    @BindView(R.id.password)
    EditText password;
    @BindView(R.id.register)
    Button register;
    private IMainPresenter presenter;
    private String path = "http://172.17.8.100/small/user/v1/register";
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            NewsBean newsBean = (NewsBean) msg.obj;
            if (newsBean.getStatus().equals("0000")){
                Toast.makeText(HomeActivity.this,"注册成功,请前往登录页面登录",Toast.LENGTH_LONG).show();
                Intent intent = new Intent(HomeActivity.this, MainActivity.class);
                startActivity(intent);
            }else{
                Toast.makeText(HomeActivity.this,"注册失败,手机号格式错误",Toast.LENGTH_LONG).show();
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register_layout);
        ButterKnife.bind(this);
        initData();
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String phones = username.getText().toString();
                String pwds = password.getText().toString();
                presenter.Login(path,phones,pwds);
            }
        });
    }

    private void initData() {
        //创建P层且绑定
        presenter = new IMainPresenter();
        presenter.setView(this);
    }
    @Override
    public void callBackSuccess(NewsBean newsBean) {
        Log.e("myMessage1",""+newsBean.getMessage());
        Message message = new Message();
        message.obj= newsBean;
        handler.sendMessage(message);
        Log.e("myMessage2", "" +newsBean.getStatus());
    }


    @Override
    public void callBackOnerror(String err) {

    }
    //解绑

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.detachView();
    }
}

MainActivity 登录

 

public class MainActivity extends AppCompatActivity implements IMainView {
    @BindView(R.id.username)
    EditText username;
    @BindView(R.id.password)
    EditText password;
    @BindView(R.id.login)
    Button login;
    @BindView(R.id.reg)
    Button reg;
    private String path = "http://172.17.8.100/small/user/v1/login";
    private IMainPresenter presenter;
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            NewsBean newsBean = (NewsBean) msg.obj;
            if (newsBean.getStatus().equals("0000")) {
                Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(MainActivity.this, ShowActivity.class);
                startActivity(intent);
            } else {
                Toast.makeText(MainActivity.this, "登陆失败,请检查手机号和密码", Toast.LENGTH_LONG).show();
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initData();
        reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                startActivity(intent);
            }
        });
    }

    private void initData() {
        //创建P层且绑定
        presenter = new IMainPresenter();
        presenter.setView(this);
    }

    @Override
    public void callBackSuccess(NewsBean newsBean) {
        Log.e("myMessage1", "" + newsBean.getMessage());
        Message message = new Message();
        message.obj = newsBean;
        handler.sendMessage(message);
        Log.e("myMessage2", "" + newsBean.getStatus());
    }

    @Override
    public void callBackOnerror(String err) {

    }

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

    @OnClick(R.id.login)
    public void onViewClicked() {
        String phones = username.getText().toString();
        String pwds = password.getText().toString();
        presenter.Login(path, phones, pwds);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值