java mvp模式_android中MVP模式(一)

bc027b113ce64e6bd6ba08fe6a008bb2.png

ed1e85d37698fb4d017b5e41d407250e.png

2. 建立bean

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(处理业务逻辑,这里指数据读写),先写接口,后写实现

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的方法,也是接口

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中分离出来。

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变量。

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)

8801a33804622ba78dac0579af847d8d.png

大小: 17.9 KB

9333af1b2df1a2258b10bf98a29b0e47.png

大小: 36.3 KB

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2014-12-24 10:25

浏览 637

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值