android MVP模式网络请求

本文介绍了一个基于MVC架构的简单登录系统实现案例。该系统包括User模型用于存放用户名和密码信息,IUserModel接口定义了登录逻辑,UserPresenter作为控制器处理登录流程并与视图交互,LoginActivity作为视图负责展示进度提示及登录结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值