MVP的简单登录

来源:互联网 发布:淘宝宠物狗 编辑:程序博客网 时间:2024/06/05 11:03
MVP
M:model:业务,网络处理 耗时操作
V: view;视图 比如Activity 降低耦合

P :presenter: 初始化model层的处理 ,跟V层简历联系, 处理逻辑,

Model层
public interface IUserMode {    /**     * 登录     *     * @param user     * @return 约定返回"true"为登录成功,其他为登录失败的错误信息     */    String login(User user);}

public class UserMode implements IUserMode {    private String code;    @Override    public String login(User user) {        HashMap<String, String> map = new HashMap<>();        map.put("mobile",user.getUsername());        map.put("password",user.getPassword());        OkHttp3Utils.getInstance().doPost(API.LOGIN, map, new GsonObjectCallback<Userbeann>() {            @Override            public void onUi(Userbeann userbeann) {                code = userbeann.getCode();            }            @Override            public void onFailed(Call call, IOException e) {            }        });        return code;    }}

P层捡来连接 处理

public class UserPresenter {    private final IUserView userView;    private final UserMode userMode;    public UserPresenter(IUserView userView) {        this.userView = userView;        this.userMode = new UserMode();    }    /**     * 登录     *     * @param user     */    public void login(final User user) {        final String res = userMode.login(user);        if ("0".equals(res)) {            userView.onLoginSuccess();        } else {            userView.onLoginFailed(res);        }    }}

VIew层

public class User {    private String username;    private String password;    public User(String username, String password) {        this.username = username;        this.password = password;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

public class Userbeann {    private String msg;    private String code;    public Userbeann(String msg, String code) {        this.msg = msg;        this.code = code;    }    @Override    public String toString() {        return "Userbeann{" +                "msg='" + msg + '\'' +                ", code='" + code + '\'' +                '}';    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }}

//对应的API的借口

public class API {    public static final String IP="http://120.27.23.105";    public static final String LOGIN=IP+"/user/login";}

//两个bean类

public class User {    private String username;    private String password;    public User(String username, String password) {        this.username = username;        this.password = password;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

public class Userbeann {    private String msg;    private String code;    public Userbeann(String msg, String code) {        this.msg = msg;        this.code = code;    }    @Override    public String toString() {        return "Userbeann{" +                "msg='" + msg + '\'' +                ", code='" + code + '\'' +                '}';    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }}

//主页面

public class MainActivity extends AppCompatActivity implements IUserView, View.OnClickListener {    private UserPresenter userPresenter;    private EditText etUserName;    private EditText etPassword;    private ProgressDialog loginProgreess;    private Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          etUserName = (EditText)findViewById(R.id.name);        etPassword = (EditText)findViewById(R.id.pass);        btn = (Button)findViewById(R.id.btn);        btn.setOnClickListener(this);        userPresenter = new UserPresenter(this);    }    @Override    public void onClick(View view) {        final String username = etUserName.getText().toString().trim();        final String password = etPassword.getText().toString().trim();        if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){            Toast.makeText(getApplicationContext(), "账号或密码不能为空", Toast.LENGTH_SHORT).show();            return;        }        loginProgreess = ProgressDialog.show(this, "登录", "正在登录...");        userPresenter.login(new User(username, password));    }    @Override    public void onLoginSuccess() {  loginProgreess.dismiss();        Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_LONG).show();    }    @Override    public void onLoginFailed(String error) {        loginProgreess.dismiss();        Toast.makeText(getApplicationContext(), "登录失败:" + error, Toast.LENGTH_SHORT).show();    }}


//相关布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.eightgroup.mvp.MainActivity">    <EditText        android:id="@+id/name"        android:layout_width="match_parent"        android:layout_height="wrap_content"       />    <EditText        android:layout_below="@+id/name"        android:id="@+id/pass"        android:layout_width="match_parent"        android:layout_height="wrap_content"        />    <Button        android:layout_below="@+id/pass"        android:id="@+id/btn"        android:text="登录"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></RelativeLayout>




原创粉丝点击