Android MVP 实例
Android MVP 实例演示
效果展示
Android MVP详解
MVP 流程图
说明:
步骤1:View引用Presenter
步骤2:Presenter调用Model,走Model具体逻辑
步骤3:Model逻辑实现,回调Presenter方法
步骤4:Presenter回调View
目录图
MVP model
IStudentModel.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public interface IStudentModel {
/** * 保存学生信息 * @param id 学号 * @param name 姓名 * @param sex 性别 */ void save(int id,String name,String sex);
/** * 读取学生信息 * @param id 学号 * @return */ Student load(int id); }
|
StudentModel.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class StudentModel implements IStudentModel {
private int id; private String name; private String sex; private SparseArray<Student> array = new SparseArray<>();
@Override public void save(int id,String name,String sex) { Student student = new Student(); student.setId(id); student.setName(name); student.setSex(sex); array.append(id, student); }
@Override public Student load(int id) { Student notFound = new Student(); notFound.setName("没有发现"); notFound.setSex("没有发现"); Student student=array.get(id, notFound); return student; } }
|
MVP presenter
UserPresenter.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class UserPresenter { private IStudentModel iStudentModel; private IMainView iMainView;
public UserPresenter(IMainView iMainView) { this.iMainView = iMainView; iStudentModel = new StudentModel(); }
public void save(int id, String name, String sex) { iStudentModel.save(id,name,sex); }
public void load(int id) { Student student=iStudentModel.load(id); iMainView.setName(student.getName()); iMainView.setSex(student.getSex()); } }
|
MVP View
IMainView.java
1 2 3 4 5 6 7 8 9 10 11 12
| public interface IMainView {
void setName(String name);
void setSex(String sex);
int getId();
String getName();
String getSex(); }
|
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public class MainActivity extends Activity implements View.OnClickListener, IMainView {
private EditText et_id; private EditText et_name; private EditText et_sex; private Button bt_save; private Button bt_load;
private UserPresenter userPresenter;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login);
initView(); }
private void initView() { et_id = (EditText) findViewById(R.id.et_id); et_name = (EditText) findViewById(R.id.et_name); et_sex = (EditText) findViewById(R.id.et_sex); bt_save = (Button) findViewById(R.id.bt_save); bt_load = (Button) findViewById(R.id.bt_load);
bt_save.setOnClickListener(this); bt_load.setOnClickListener(this);
userPresenter =new UserPresenter(this); }
@Override public void onClick(View v) {
switch (v.getId()) { case R.id.bt_save: userPresenter.save(getId(),getName(),getSex()); break; case R.id.bt_load: userPresenter.load(getId()); break; default: break; } }
@Override public void setName(String name) { et_name.setText(name); }
@Override public void setSex(String sex) { et_sex.setText(sex); }
@Override public int getId() { return Integer.parseInt(et_id.getText().toString()); }
@Override public String getName() { return et_name.getText().toString(); }
@Override public String getSex() { return et_sex.getText().toString(); } }
|
bean
Student.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class Student {
private int id; private String name; private String sex;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getSex() { return sex; }
public void setSex(String sex) { this.sex = sex; } }
|
以上就是AndroidMVP的一个小demo,以上的源码我已经开源在Github,地址:AndroidMVP
欢迎大家关注我的微信公众号,我会不定期的分享些Android开发的技巧