您的位置:首页 > 移动开发 > Android开发

android Mvp简单实用

2016-01-04 13:03 387 查看
View 对应于Activity,负责View的绘制以及与用户交互
Model 依然是业务逻辑和实体模型
Presenter 负责完成View于Model间的交互

模拟客户端的登录操作,并实现登录成功与登录失败的回调。

1.bean文件

package com.mvp.bean;

public class UserBean {
private String username;
private String pwd;

public UserBean() {
super();
}

public UserBean(String username, String pwd) {
super();
this.username = username;
this.pwd = pwd;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

}


2.Model

package com.mvp.model;

import com.mvp.listener.OnLoginListener;

public interface UserModel {
// 登录
void Login(String username, String pwd,OnLoginListener listener);
}


3.Model的实现,OnLoginListener是成功、失败的回调

package com.mvp.model;

import android.annotation.SuppressLint;

import com.mvp.listener.OnLoginListener;

@SuppressLint("HandlerLeak")
public class UserModelImpl implements UserModel {
/**
* 实现业务操作
*/
@Override
public void Login(final String username, String pwd,
final OnLoginListener listener) {
new Thread() {

@Override
public void run() {
if (username.equals("1")) {
listener.onSuccess();
} else if (username.equals("2")) {
listener.onError();
}
}
}.start();
}
}


4.UserView

package com.mvp.view;

public interface UserView {

String getUserName();

String getPwd();

void showDialog(String title);
}


5.Presenter

package com.mvp.presenter;

import android.os.Handler;

import com.mvp.listener.OnLoginListener;
import com.mvp.model.UserModel;
import com.mvp.model.UserModelImpl;
import com.mvp.view.UserView;

public class UserPresenter {
private UserModel userModel;
private UserView userView;
private Handler mHandler = new Handler();

public UserPresenter(UserView userView) {
this.userView = userView;
userModel = new UserModelImpl();
}

public void login(String username, String pwd) {
userModel.Login(username, pwd, new OnLoginListener() {

@Override
public void onSuccess() {
mHandler.post(new Runnable() {

@Override
public void run() {
userView.showDialog("success");
}
});
}

@Override
public void onError() {
mHandler.post(new Runnable() {

@Override
public void run() {
userView.showDialog("error");
}
});
}
});
}
}


6.Activity文件

package com.mvp.view;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.mvp.presenter.UserPresenter;

public class MainActivity extends Activity implements UserView, OnClickListener {
private TextView tv_show;
private EditText et_username, et_pwd;
private Button btn_save, btn_clear;
private UserPresenter userPresenter;
private Context context;

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

private void initView() {
userPresenter = new UserPresenter(this);
tv_show = (TextView) findViewById(R.id.tv_show);
et_username = (EditText) findViewById(R.id.et_username);
et_pwd = (EditText) findViewById(R.id.et_pwd);
findViewById(R.id.btn_save).setOnClickListener(this);
findViewById(R.id.btn_clear).setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
userPresenter.login(getUserName(), getPwd());
break;
case R.id.btn_clear:
break;
}
}

@Override
public String getUserName() {
return et_username.getText().toString();
}

@Override
public String getPwd() {
return et_pwd.getText().toString();
}

@Override
public void showDialog(String title) {
new AlertDialog.Builder(this).setTitle(title)
.setPositiveButton("确定", null).setNegativeButton("取消", null)
.show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: