android中MVP模式

1. 明确需求,界面如下:可存,可根据id读取数据。



包结构图


2. 建立bean
  1. public class UserBean {  
  2.      private String mFirstName;  
  3.      private String mLastName;  
  4.   
  5.      public UserBean(String firstName, String lastName) {  
  6.             this. mFirstName = firstName;  
  7.             this. mLastName = lastName;  
  8.      }  
  9.   
  10.      public String getFirstName() {  
  11.             return mFirstName;  
  12.      }  
  13.   
  14.      public String getLastName() {  
  15.             return mLastName;  
  16.      }  
  17. }  

3. 建立model(处理业务逻辑,这里指数据读写),先写接口,后写实现
  1. public interface IUserModel {  
  2.      void setID(int id);  
  3.   
  4.      void setFirstName(String firstName);  
  5.   
  6.      void setLastName(String lastName);  
  7.   
  8.      int getID();  
  9.   
  10.      UserBean load(int id);// 通过id读取user信息,返回一个UserBean  
  11. }  
实现不在这里写了。

4. 建立view(更新ui中的view状态),这里列出需要操作当前view的方法,也是接口
  1. public interface IUserView {  
  2.      int getID();  
  3.   
  4.      String getFristName();  
  5.   
  6.      String getLastName();  
  7.   
  8.      void setFirstName(String firstName);  
  9.   
  10.      void setLastName(String lastName);  
  11. }  

5. 建立presenter(主导器,通过iView和iModel接口操作model和view),activity可以把所有逻辑给presenter处理,这样java逻辑就从手机的activity中分离出来。
  1. public class UserPresenter {  
  2.      private IUserView mUserView;  
  3.      private IUserModel mUserModel;  
  4.   
  5.      public UserPresenter(IUserView view) {  
  6.             mUserView = view;  
  7.             mUserModel = new UserModel();  
  8.      }  
  9.   
  10.      public void saveUser( int id, String firstName, String lastName) {  
  11.             mUserModel.setID(id);  
  12.             mUserModel.setFirstName(firstName);  
  13.             mUserModel.setLastName(lastName);  
  14.      }  
  15.   
  16.      public void loadUser( int id) {  
  17.            UserBean user = mUserModel.load(id);  
  18.             mUserView.setFirstName(user.getFirstName()); // 通过调用IUserView的方法来更新显示  
  19.             mUserView.setLastName(user.getLastName());  
  20.      }  
  21. }  

6. activity中实现iview接口,在其中操作view,实例化一个presenter变量。
  1. public class MainActivity extends Activity implements OnClickListener,IUserView {  
  2.   
  3.      UserPresenter presenter;  
  4.      EditText id,first,last;  
  5.      @Override  
  6.      protected void onCreate(Bundle savedInstanceState) {  
  7.             super.onCreate(savedInstanceState);  
  8.            setContentView(R.layout. activity_main);  
  9.              
  10.            findViewById(R.id. save).setOnClickListener( this);  
  11.            findViewById(R.id. load).setOnClickListener( this);  
  12.             id = (EditText) findViewById(R.id. id);  
  13.             first = (EditText) findViewById(R.id. first);  
  14.             last = (EditText) findViewById(R.id. last);  
  15.              
  16.             presenter = new UserPresenter( this);  
  17.      }  
  18.   
  19.      @Override  
  20.      public void onClick(View v) {  
  21.             switch (v.getId()) {  
  22.             case R.id. save:  
  23.                  presenter.saveUser(getID(), getFristName(), getLastName());  
  24.                  break;  
  25.             case R.id. load:  
  26.                  presenter.loadUser(getID());  
  27.                  break;  
  28.             default:  
  29.                  break;  
  30.            }  
  31.      }  
  32.   
  33.      @Override  
  34.      public int getID() {  
  35.             return new Integer( id.getText().toString());  
  36.      }  
  37.   
  38.      @Override  
  39.      public String getFristName() {  
  40.             return first.getText().toString();  
  41.      }  
  42.   
  43.      @Override  
  44.      public String getLastName() {  
  45.             return last.getText().toString();  
  46.      }  
  47.   
  48.      @Override  
  49.      public void setFirstName(String firstName) {  
  50.             first.setText(firstName);  
  51.      }  
  52.   
  53.      @Override  
  54.      public void setLastName(String lastName) {  
  55.             last.setText(lastName);  
  56.      }  
  57.   
  58. }  

7. 所谓的mvp,即是(model-处理业务逻辑(主要是数据读写,或者与后台通信(其实也是读写数据)),view-处理ui控件,presenter-主导器,操作model和view)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值