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

android中MVP模式(一)

2016-05-26 12:55 645 查看
1. 明确需求,界面如下:可存,可根据id读取数据。



包结构图



2. 建立bean

[java] view
plain copy

 print?

public class UserBean {  

     private String mFirstName;  

     private String mLastName;  

  

     public UserBean(String firstName, String lastName) {  

            this. mFirstName = firstName;  

            this. mLastName = lastName;  

     }  

  

     public String getFirstName() {  

            return mFirstName;  

     }  

  

     public String getLastName() {  

            return mLastName;  

     }  

}  

3. 建立model(处理业务逻辑,这里指数据读写),先写接口,后写实现

[java] view
plain copy

 print?

public interface IUserModel {  

     void setID(int id);  

  

     void setFirstName(String firstName);  

  

     void setLastName(String lastName);  

  

     int getID();  

  

     UserBean load(int id);// 通过id读取user信息,返回一个UserBean  

}  

实现不在这里写了。

4. 建立view(更新ui中的view状态),这里列出需要操作当前view的方法,也是接口

[java] view
plain copy

 print?

public interface IUserView {  

     int getID();  

  

     String getFristName();  

  

     String getLastName();  

  

     void setFirstName(String firstName);  

  

     void setLastName(String lastName);  

}  

5. 建立presenter(主导器,通过iView和iModel接口操作model和view),activity可以把所有逻辑给presenter处理,这样java逻辑就从手机的activity中分离出来。

[java] view
plain copy

 print?

public class UserPresenter {  

     private IUserView mUserView;  

     private IUserModel mUserModel;  

  

     public UserPresenter(IUserView view) {  

            mUserView = view;  

            mUserModel = new UserModel();  

     }  

  

     public void saveUser( int id, String firstName, String lastName) {  

            mUserModel.setID(id);  

            mUserModel.setFirstName(firstName);  

            mUserModel.setLastName(lastName);  

     }  

  

     public void loadUser( int id) {  

           UserBean user = mUserModel.load(id);  

            mUserView.setFirstName(user.getFirstName()); // 通过调用IUserView的方法来更新显示  

            mUserView.setLastName(user.getLastName());  

     }  

}  

6. activity中实现iview接口,在其中操作view,实例化一个presenter变量。

[java] view
plain copy

 print?

public class MainActivity extends Activity implements OnClickListener,IUserView {  

  

     UserPresenter presenter;  

     EditText id,first,last;  

     @Override  

     protected void onCreate(Bundle savedInstanceState) {  

            super.onCreate(savedInstanceState);  

           setContentView(R.layout. activity_main);  

             

           findViewById(R.id. save).setOnClickListener( this);  

           findViewById(R.id. load).setOnClickListener( this);  

            id = (EditText) findViewById(R.id. id);  

            first = (EditText) findViewById(R.id. first);  

            last = (EditText) findViewById(R.id. last);  

             

            presenter = new UserPresenter( this);  

     }  

  

     @Override  

     public void onClick(View v) {  

            switch (v.getId()) {  

            case R.id. save:  

                 presenter.saveUser(getID(), getFristName(), getLastName());  

                 break;  

            case R.id. load:  

                 presenter.loadUser(getID());  

                 break;  

            default:  

                 break;  

           }  

     }  

  

     @Override  

     public int getID() {  

            return new Integer( id.getText().toString());  

     }  

  

     @Override  

     public String getFristName() {  

            return first.getText().toString();  

     }  

  

     @Override  

     public String getLastName() {  

            return last.getText().toString();  

     }  

  

     @Override  

     public void setFirstName(String firstName) {  

            first.setText(firstName);  

     }  

  

     @Override  

     public void setLastName(String lastName) {  

            last.setText(lastName);  

     }  

  

}  

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

8. 源码地址
http://download.csdn.net/detail/knxw0001/7983807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: