Android中使用MVP

MVP从MVC演变而来,二者有什么区别呢?点击打开链接百科上说的很清楚。下面是比较熟悉的关系图:


下面是一个简单的demo,分包如下:



由于Model与View完全解耦,通过在Presenter中把Model中获取的数据交付给View。

bean:

/**
 * People 实体模型
 */
public class People {
    private String name;
    private String idNumber;
    private String address;
    public String getName() {
        return name;
    }
    public String getIdNumber() {
        return idNumber;
    }
    public String getAddress() {
        return address;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setIdNumber(String idNumber) {
        this.idNumber = idNumber;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

model:

/**
 * 在bean中存取数据
 */
public class peopleModel{
    private People people = new People();
    private static peopleModel model;
    private String value;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 0:
                    value = (String)msg.obj;
                    break;
                default:
                    break;
            }
        }
    };
    public String getidNumber(){
           return people.getIdNumber();
    }
    public String getName(){
        return people.getName();
    }
    public String getAddress(){
        return people.getAddress();
    }
    public void setidNumber(String id){
       people.setIdNumber(id);
    }
    public void setName(String name){
        people.setName(name);
    }
    public void setAddress(String address){
        people.setAddress(address);
    }
   public static peopleModel newInstance(){
       if(model==null){
           model = new peopleModel();
       }
       return model;
   }
}
presenter:

public class peoplePresenter {
    viewInterface viewinter;
    peopleModel mode = peopleModel.newInstance();
    public peoplePresenter(viewInterface viewinter){
        this.viewinter  =  viewinter;
    }
    public void setValue(String id,String name,String address){
        mode.setidNumber(id);
        mode.setName(name);
        mode.setAddress(address);
    }
    public void updateValue(){
        viewinter.setName("diy");
        viewinter.setidNumber("111");
        viewinter.setAddress("anhui");
    }
    public void showAlertDialog(){
        viewinter.showAlert(mode.getidNumber()+" "+mode.getName()+" "+mode.getAddress());
    }
}
view interface:

public interface viewInterface {
    public void setName(String name);
    public void setidNumber(String idNumber);
    public void setAddress(String password);
    public String getName();
    public String getAddress();
    public String getidNumber();
    public void showAlert(String value);
    public void showText(String s);
}
Activity:

public class MainActivity extends AppCompatActivity implements viewInterface, View.OnClickListener{
    private Button button;
    private EditText id;
    private EditText name;
    private EditText address;
    private TextView text;
    private peoplePresenter presenter;
    private downPresenter downpresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)findViewById(R.id.button);
        id = (EditText)findViewById(R.id.idnumber);
        name = (EditText)findViewById(R.id.name);
        address = (EditText)findViewById(R.id.address);
        text = (TextView)findViewById(R.id.text);
        presenter = new peoplePresenter(MainActivity.this);
        downpresenter = new downPresenter(MainActivity.this);
        button.setOnClickListener(this);
    }
    @Override
    public void setName(String name) {
          this.name.setText(name);
    }
    @Override
    public void setidNumber(String idNumber) {
      this.id.setText(idNumber);
    }
    @Override
    public void setAddress(String address) {
      this.address.setText(address);
    }
    @Override
    public String getName() {
        return this.name.getText().toString();
    }
    @Override
    public String getAddress() {
        return this.address.getText().toString();
    }
    @Override
    public String getidNumber() {
        return this.id.getText().toString();
    }

    /**
     * @param s
     * @显示网络数据
     */
    @Override
    public void showText(String s) {
        this.text.setText(s);
    }
    /**
     * @param value
     * @显示AlterDialog
     */
    @Override
    public void showAlert(String value) {
        Dialog dialog = new AlertDialog.Builder(this).setMessage("确认输入的信息:"+value).setNeutralButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
            }
        }).setNegativeButton("正确", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
            }
        }).create();
        dialog.show();
    }
    @Override
    public void onClick(View v) {
       int id = v.getId();
        switch (id){
            case R.id.button:
                presenter.setValue(getidNumber(),getName(),getAddress());
                downpresenter.showText();
                presenter.showAlertDialog();
                break;
            default:
                break;
        }
    }
}

                             

                        详细见下载资源:

                                                     http://download.csdn.net/detail/bat_os/9736423


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值