mvp登录注册

MyCallBack:

public interface MyCallBack<T> {
    void setData(T user);
    void setError(T error);
}

model:

public interface Model {
    //当我这个type==1时操作登录  当我这个type==2时操作注册
    void getData(String url, String userName, String password,int type, MyCallBack callBack);
}

modelImpl:

public class ModelImpl implements Model {
    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //因为这个json串有问题 所以我们可以自己得到json判断处理
//            try {
//                String jsonStr = (String) msg.obj;
//                Gson gson = new Gson();
//                JSONObject object = new JSONObject(jsonStr);
//                String data = object.optString("data");
//                //登录的时候data是对象  注册的时候data是String
//                if (data != null) {
//                    User user = new User();
//                    user.setCode(object.optString("code"));
//                    user.setMsg(object.optString("msg"));
//                    callBack.setData(user);
//                } else {
//                    User user = gson.fromJson(jsonStr, User.class);
//                    callBack.setData(user);
//                }
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }

            switch (type) {
                case 1:
                    String jsonStr = (String) msg.obj;
                    Gson gson = new Gson();
                    User user = gson.fromJson(jsonStr, User.class);
                    callBack.setData(user);
                    break;
                case 2:
                    String jsonStr1 = (String) msg.obj;
                    Gson gson1 = new Gson();
                    UserRegister register = gson1.fromJson(jsonStr1, UserRegister.class);
                    callBack.setData(register);
                    break;
            }


        }
    };
    private MyCallBack callBack;
    private int type;

    @Override
    public void getData(final String url, final String mobile, final String password, int type, final MyCallBack callBack) {
        this.callBack = callBack;
        this.type = type;
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    String jsonStr = HttpUtils.post(url, mobile, password);
                    mHandler.sendMessage(mHandler.obtainMessage(0, jsonStr));
                } catch (Exception e) {
                    Looper.prepare();
                    callBack.setError("异常");
                    Looper.loop();
                }
            }
        }).start();

    }
}

 

Iview:

public interface IView<T> {
    void success(T data);

    void error(T error);
}

 

Ipresnter:

public interface IPresenter {
    void startRequest(String url,String mobile,String password,int type);
}

PresenterImpl:

public class PresenterImpl implements IPresenter {
    private ModelImpl model;
    private IView iView;

    public PresenterImpl(IView iView) {
        this.iView = iView;
        model = new ModelImpl();
    }

    @Override
    public void startRequest(final String url, String mobile, String password,int type) {
        model.getData(url, mobile, password,type, new MyCallBack() {
            @Override
            public void setData(Object user) {
                iView.success(user);
            }

            @Override
            public void setError(Object error) {
                iView.error(error);
            }
        });
    }

    //防止内存泄漏
    public void onDetatch() {
        if (model != null) {
            model = null;
        }
        if (iView != null) {
            iView = null;
        }
    }
}
 

HttpUtils:

public static String post(String urlStr, String mobile, String pass) throws Exception {
        String inputStr = "";
        URL url = new URL(urlStr);
        //由一个有效的网址服务返回这个对象
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置请求方式
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setConnectTimeout(5000);
        OutputStream outputStream = connection.getOutputStream();
        String params = "mobile=" + mobile + "&password=" + pass;
        outputStream.write(params.getBytes());
        if (connection.getResponseCode() == 200) {
            InputStream stream = connection.getInputStream();
            inputStr = getInputStr(stream);
        }

        return inputStr;
    }

 

 

main:

public class MainActivity<T> extends BaseActivity implements IView<T> {
    private PresenterImpl presenter;
    private EditText mMobile, mPassWord;
    private Button mLogin, mRegister;
    private String mUrl = "http://120.27.23.105/user/login";
    private SharedPreferences mShared;
    private boolean isLogin;
    private SharedPreferences.Editor mEditor;

    @Override
    protected int getLayout() {
        return R.layout.activity_main;
    }

    @Override
    protected void initViews() {
        mMobile = findViewById(R.id.Edit_Name);
        mPassWord = findViewById(R.id.Edit_Pass);
        mLogin = findViewById(R.id.Login_Btn);
        mRegister = findViewById(R.id.Register_Btn);

    }

    @Override
    protected void setOnClick() {
        mLogin.setOnClickListener(this);
        mRegister.setOnClickListener(this);
    }

    @Override
    protected void processLogic() {
        mShared = getSharedPreferences("lvxx", MODE_PRIVATE);
        mEditor = mShared.edit();
        isLogin = mShared.getBoolean("isLogin", false);
        if (isLogin) {
            startActivity(new Intent(this, HomeActivity.class));
            finish();
        }
        presenter = new PresenterImpl(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Login_Btn:
                String mobile = mMobile.getText().toString().trim();
                String pass = mPassWord.getText().toString().trim();
                if (mobile.isEmpty() || pass.isEmpty()) {
                    Toast.makeText(this, "账号和密码都不能为空", Toast.LENGTH_SHORT).show();
                    return;
                } else {
                    presenter.startRequest(mUrl, mobile, pass,1);
                }

                break;
            case R.id.Register_Btn:
                startActivity(new Intent(this, RegisterActivity.class));
                break;
        }
    }


    @Override
    public void success(T data) {
        User user = (User) data;
        if (user.getCode().equals("1")) {
            Toast.makeText(this, user.getMsg(), Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, user.getMsg(), Toast.LENGTH_SHORT).show();
            startActivity(new Intent(this, HomeActivity.class));
            finish();
            mEditor.putBoolean("isLogin", true);
            mEditor.commit();
        }
    }

    @Override
    public void error(T error) {
        String e = (String) error;
        Toast.makeText(this, e, Toast.LENGTH_SHORT).show();
    }
}

 

register:

public class RegisterActivity<T> extends BaseActivity implements IView<T> {
    private PresenterImpl presenter;
    private EditText mMobile, mPassWord;
    private Button mRegister;
    private String mUrl = "http://120.27.23.105/user/reg";

    @Override
    protected int getLayout() {
        return R.layout.activity_register;
    }

    @Override
    protected void initViews() {
        mMobile = findViewById(R.id.Edit_Name);
        mPassWord = findViewById(R.id.Edit_Pass);
        mRegister = findViewById(R.id.Register_Btn);
    }

    @Override
    protected void setOnClick() {
        mRegister.setOnClickListener(this);
    }

    @Override
    protected void processLogic() {
        presenter = new PresenterImpl(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Register_Btn:
                String mobile = mMobile.getText().toString().trim();
                String pass = mPassWord.getText().toString().trim();
                if (mobile.isEmpty() || pass.isEmpty()) {
                    Toast.makeText(this, "账号和密码都不能为空", Toast.LENGTH_SHORT).show();
                    return;
                } else {
                    presenter.startRequest(mUrl, mobile, pass,2);
                }
                break;
        }
    }

    @Override
    public void success(T data) {
        User user = (User) data;
        if (user.getCode().equals("1")) {
            Toast.makeText(this, user.getMsg(), Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, user.getMsg(), Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    @Override
    public void error(T error) {
        Toast.makeText(this, error.toString() + "失败", Toast.LENGTH_SHORT).show();
    }
}
 

 

home:

public class HomeActivity extends BaseActivity {
    private TextView mTv;
    private SharedPreferences mShared;
    private SharedPreferences.Editor mEditor;

    @Override
    protected int getLayout() {
        return R.layout.activity_home;
    }

    @Override
    protected void initViews() {
        mTv = findViewById(R.id.Home_Get);
    }

    @Override
    protected void setOnClick() {
        mTv.setOnClickListener(this);
    }

    @Override
    protected void processLogic() {
        mShared = getSharedPreferences("lvxx", MODE_PRIVATE);
        mEditor = mShared.edit();

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Home_Get:
                mEditor.clear();
                mEditor.commit();
                break;
        }
    }
}
 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值