android MVP模式网络请求

1 篇文章 0 订阅
1 篇文章 0 订阅
public class User {
private String name;
private String password;

public User() {
super();
}
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}


public interface IUserModel {
public void login(String name, String password, OnLoginListener loginListener);
}


public interface OnLoginListener {
void loginSuccess(User user);
void loginFailed();
}


public class UserModel implements IUserModel {
@Override
public void login(final String name, final String password,
final OnLoginListener loginListener) {
//模拟子线程耗时操作
        new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    Thread.sleep(2000);
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
                //模拟登录成功
                if ("zhy".equals(name) && "123".equals(password))
                {
                    User user = new User();
                    user.setName(name);
                    user.setPassword(password);
                    loginListener.loginSuccess(user);
                } else
                {
                    loginListener.loginFailed();
                }
            }
        }.start();
}
}


public class UserPresenter {

private IUserView view;
private IUserModel model;
private Handler mHandler = new Handler();

public UserPresenter(IUserView view) {
this.view = view;
this.model = new UserModel();
}

public void login() {
view.showProgress();
model.login(view.getName(), view.getPassword(), new OnLoginListener() {
@Override
public void loginSuccess(User user) {
//需要在UI线程执行
                mHandler.post(new Runnable()
                {
                    @Override
                    public void run()
                    {
                    view.toastSuccess();
                    view.hideProgress();
                    }
                });
}

@Override
public void loginFailed() {
mHandler.post(new Runnable()
                {
                    @Override
                    public void run()
                    {
                    view.toastFailed();
                    view.hideProgress();
                    }
                });
}
});
}
}


public interface IUserView {

public String getName();

public String getPassword();

public void showProgress();

public void hideProgress();

public void toastSuccess();

public void toastFailed();

}


public class LoginActivity extends Activity implements OnClickListener,IUserView {


private EditText name,password;
private ProgressBar progress;
private UserPresenter presenter = new UserPresenter(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

name = (EditText) findViewById(R.id.name);
password = (EditText) findViewById(R.id.password);
progress = (ProgressBar) findViewById(R.id.progress);
findViewById(R.id.submit).setOnClickListener(this);
}


@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.submit:
presenter.login();
break;
}
}


@Override
public String getName() {
return name.getText().toString();
}


@Override
public String getPassword() {
return password.getText().toString();
}


@Override
public void showProgress() {
progress.setVisibility(View.VISIBLE);
}


@Override
public void hideProgress() {
progress.setVisibility(View.GONE);
}


@Override
public void toastSuccess() {
Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
}


@Override
public void toastFailed() {
Toast.makeText(this, "登录失败!", Toast.LENGTH_SHORT).show();
}


}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值