MVP实现登陆注册

来源:互联网 发布:linux 鼠标灵敏度太高 编辑:程序博客网 时间:2024/05/20 21:59

分包结构:



效果图:

登陆失败:


登陆成功:(跳转到一个新的activity)


OkhttpUtils工具类我其他的博客里面有,就不在这里过多展示了下面是博客地址:
http://blog.csdn.net/weixin_39779085/article/details/78600968
贴心吧。哈哈哈哈哈哈       哈

生成实体bean:

public class UserBean {    private String msg;    private String code;    private DataEntity data;    public static UserBean objectFromData(String str) {        return new com.google.gson.Gson().fromJson(str, UserBean.class);    }    public void setMsg(String msg) {        this.msg = msg;    }    public void setCode(String code) {        this.code = code;    }    public void setData(DataEntity data) {        this.data = data;    }    public String getMsg() {        return msg;    }    public String getCode() {        return code;    }    public DataEntity getData() {        return data;    }    public static class DataEntity {                private Object age;        private String appkey;        private String appsecret;        private String createtime;        private Object email;        private Object gender;        private Object icon;        private String mobile;        private Object money;        private Object nickname;        private String password;        private String token;        private int uid;        private String username;        public static DataEntity objectFromData(String str) {            return new com.google.gson.Gson().fromJson(str, DataEntity.class);        }        public void setAge(Object age) {            this.age = age;        }        public void setAppkey(String appkey) {            this.appkey = appkey;        }        public void setAppsecret(String appsecret) {            this.appsecret = appsecret;        }        public void setCreatetime(String createtime) {            this.createtime = createtime;        }        public void setEmail(Object email) {            this.email = email;        }        public void setGender(Object gender) {            this.gender = gender;        }        public void setIcon(Object icon) {            this.icon = icon;        }        public void setMobile(String mobile) {            this.mobile = mobile;        }        public void setMoney(Object money) {            this.money = money;        }        public void setNickname(Object nickname) {            this.nickname = nickname;        }        public void setPassword(String password) {            this.password = password;        }        public void setToken(String token) {            this.token = token;        }        public void setUid(int uid) {            this.uid = uid;        }        public void setUsername(String username) {            this.username = username;        }        public Object getAge() {            return age;        }        public String getAppkey() {            return appkey;        }        public String getAppsecret() {            return appsecret;        }        public String getCreatetime() {            return createtime;        }        public Object getEmail() {            return email;        }        public Object getGender() {            return gender;        }        public Object getIcon() {            return icon;        }        public String getMobile() {            return mobile;        }        public Object getMoney() {            return money;        }        public Object getNickname() {            return nickname;        }        public String getPassword() {            return password;        }        public String getToken() {            return token;        }        public int getUid() {            return uid;        }        public String getUsername() {            return username;        }    }}


view层:

public interface ILoginView {    void setName(String name);    String getName();    void setPass(String pass);    String getPass();}


model层:

接口:
public interface ILoginModel {    void login(String name, String pass, Callback callback);    void reg(String name, String pass, Callback callback);}


实现类:
public class LoginModel implements ILoginModel {    @Override    public void login(String name, String pass, okhttp3.Callback callback) {        OkHttpUtils.getInstance().doGet("http://120.27.23.105/user/login?mobile="+name+"&password="+pass, (okhttp3.Callback) callback);    }    @Override    public void reg(String name, String pass, okhttp3.Callback callback) {    }}


presenter层:

public class LoginPresenter {    private Context context;    private ILoginModel model;    private ILoginView view;    public LoginPresenter(Context context, ILoginView view) {        this.context = context;        this.view = view;        model = new LoginModel();    }    public void login(){        String name = view.getName();        String pass = view.getPass();        model.login(name, pass, new OnUiCallback() {            @Override            public void onFailed(Call call, IOException e) {            }            @Override            public void onSuccess(String result) throws IOException {                Gson gson = new Gson();                UserBean userBean = gson.fromJson(result, UserBean.class);                String code = userBean.getCode();                Log.i("=========", "onSuccess: "+code);                if(code.equals("0")){                    Toast.makeText(context,"登录成功",Toast.LENGTH_SHORT).show();                    Intent intent = new Intent(context, InfoActivity.class);                    context.startActivity(intent);                }else{                    Toast.makeText(context,"登录失败",Toast.LENGTH_SHORT).show();                }            }        });    }}

布局文件:



activity_main:
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.ccm.loginmvp.activity.MainActivity">    <TextView        android:id="@+id/tv_login_return"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="返回"        android:textSize="20sp"        android:gravity="center"/>    <EditText        android:id="@+id/et_user_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="100dp"        android:padding="20dp"        android:hint="请输入账号"/>    <EditText        android:id="@+id/et_user_pwd"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="请输入密码"        android:layout_marginTop="10dp"        android:padding="20dp"        android:password="true"/>    <Button        android:id="@+id/btn_user_login"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="登陆"        android:layout_marginTop="10dp"        android:padding="20dp"        android:textColor="#fff"        android:textSize="20sp"        android:background="@drawable/shape_login"/></LinearLayout>

activity_info:
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.ccm.loginmvp.activity.InfoActivity"></android.support.constraint.ConstraintLayout>


MainActivity:

public class MainActivity extends AppCompatActivity implements ILoginView{    private EditText et_user_name, et_user_pwd;    private TextView tv_login_return;    private Button btn_user_login;    private LoginPresenter presenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        presenter = new LoginPresenter(this, this);        btn_user_login.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                presenter.login();            }        });    }    private void initView() {        et_user_name = (EditText) findViewById(R.id.et_user_name);        et_user_pwd = (EditText) findViewById(R.id.et_user_pwd);        btn_user_login = (Button) findViewById(R.id.btn_user_login);    }    @Override    public void setName(String name) {        et_user_name.setText(name);    }    @Override    public String getName() {        return et_user_name.getText().toString();    }    @Override    public void setPass(String pass) {        et_user_pwd.setText(pass);    }    @Override    public String getPass() {        return et_user_pwd.getText().toString();    }}


InfoActivity:

public class InfoActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_info);    }}


有些其他的资源文件可能会报错,段友们一看就明白,或者直接删掉就可以了。哈哈哈啊哈哈哈哈啊哈            哈