请求网络接口_注册登录之MVP模式

// 首先写Model层
public interface ILoginModel {
    public void login(String num, String pass, Callback callback);
    public void save(String num,String pass);
    public void zhuce(String num,String pass,Callback callback);
    public User show();
}
// 然后实现Model接口的类
public class LoginModel implements ILoginModel {

    Context context;
    SharedPreferences sp;
    SharedPreferences.Editor editor;
    String code ="";

    public LoginModel(Context context) {
        this.context = context;
        sp = context.getSharedPreferences("data",Context.MODE_PRIVATE);
        editor = sp.edit();
    }

    @Override
    public void login(String num, String pass, okhttp3.Callback callback) {
        OkHttpUtils.getInstance().doGet("http://????/user/login?mobile="+num+"&password="+pass,callback);
    }

    @Override
    public void save(String num, String pass) {
        editor.putString("num",num);
        editor.putString("pass",pass);
        editor.commit();
    }

    @Override
    public void zhuce(String num, String pass, okhttp3.Callback callback) {
        OkHttpUtils.getInstance().doGet("http://???/user/reg?mobile="+num+"&password="+pass,callback);
    }

    @Override
    public User show() {

        String num = sp.getString("num", "");
        String pass = sp.getString("pass", "");
        boolean flag = sp.getBoolean("flag", false);
        User user = new User(num,pass);
        return user;
    }
}
//===
接下来写View层

public interface ILoginView {

    public void setNum(String num);
    public String getNum();
    public void setPass(String pass);
    public String getPass();
}
// ==== 
接下来写persenter层


public class LoginPersenter {

    ILoginModel model;
    ILoginView view;
    Context context;

    public LoginPersenter(ILoginView view, Context context) {
        this.view = view;
        this.context = context;
        model = new LoginModel(context);
    }

    public void login(){
        final String num = view.getNum();
        final String pass = view.getPass();

        model.login(num, pass, new OnUiCallback() {
            @Override
            public void onFailed(Call call, IOException e) {

            }

            @Override
            public void onSuccess(String result) throws IOException {
                Gson gson = new Gson();
                Login2 login2 = gson.fromJson(result, Login2.class);
                String code = login2.getCode();

                if(code.equals("1")){
                    Toast.makeText(context,login2.getMsg(),Toast.LENGTH_SHORT).show();
                    return;
                }else{
                    if(code.equals("0")){
                        Intent intent = new Intent(context, MainActivity.class);
                        intent.putExtra("num",num);
                        intent.putExtra("pass",pass);
                        context.startActivity(intent);

                    }
                }
            }
        });
    }

    public void zhuce(){
        String num = view.getNum();
        String pass = view.getPass();
        User user = model.show();
        String sp_num = user.getNum();
        String sp_pass = user.getPass();

        if(num.length() == 11 && pass.length() >=6){

            model.zhuce(num, pass, new OnUiCallback() {
                @Override
                public void onFailed(Call call, IOException e) {

                }

                @Override
                public void onSuccess(String result) throws IOException {

                    Gson gson = new Gson();
                    Login login = gson.fromJson(result, Login.class);
                    if(login.getCode().equals("1")){
                        Toast.makeText(context,"注册失败",Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(context,"注册成功",Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }else{
            Toast.makeText(context,"已被注册",Toast.LENGTH_SHORT).show();
        }

    }

    public void show(){
        User user = model.show();
        String num = view.getNum();
        String pass = view.getPass();

    }
}

// =====

下面是Activity

public class LoginActivity extends AppCompatActivity implements ILoginView{

    EditText num_,pass_;
    Button btn_login,btn_zhuce;
    LoginPersenter persenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        initView();

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                persenter.login();
            }
        });

        btn_zhuce.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                persenter.zhuce();
            }
        });
    }

    private void initView() {
        num_= (EditText) findViewById(R.id.num);
        pass_= (EditText) findViewById(R.id.pass);
        btn_login= (Button) findViewById(R.id.btn_login);
        btn_zhuce= (Button) findViewById(R.id.btn_zhuce);
        persenter = new LoginPersenter((ILoginView) this,this);
    }

    @Override
    public void setNum(String num) {
        num_.setText(num);
    }

    @Override
    public String getNum() {
        return num_.getText().toString();
    }

    @Override
    public void setPass(String pass) {
        pass_.setText(pass);
    }

    @Override
    public String getPass() {
        return pass_.getText().toString();
    }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值