Android实现model变动自动化改变view之demo

在Android开发中,最头痛的事情莫过于改变了model之后,还需要通过写代码来改变View的内容。

基于以上问题,本人写了一个简单的demo用于实现自动化改变view内容。即在任何时候任何地方只要model改变,view会自动根据model的值更新内容。


demo开发步骤如下:

1、定义model

public class Model {

    private String name;
    private int age;
    private boolean sexMan;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isSexMan() {
        return sexMan;
    }

    public void setSexMan(boolean sexMan) {
        this.sexMan = sexMan;
    }

}

这是一个普通的bean类。


2、为了实现由model变动能及时刷新view的内容,我们需要定义一个interface接口,命名为InterfaceForModel。在该接口中需要定义与model中属性数目相同个数的抽象方法,每个方法传入的参数与model中该属性的set方法参数保持一致。

public interface InterfaceForModel {

    void onNameChanged(String name);

    void onAgeChanged(int age);

    void onSexChanged(boolean sex);

}

3、接下来就是在model中定义上面接口的实例,并定义set方法供外部调用,同时在model中的每个属性变量的set方法中添加对接口实例中对应方法的调用即可。如下面红色部分的代码:

public class Model {

    private String name;
    private int age;
    private boolean sexMan;

    private InterfaceForModel interfaceForModel;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        if (interfaceForModel != null) {
            interfaceForModel.onNameChanged(name);
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
        if (interfaceForModel != null) {
            interfaceForModel.onAgeChanged(age);
        }
    }

    public boolean isSexMan() {
        return sexMan;
    }

    public void setSexMan(boolean sexMan) {
        this.sexMan = sexMan;
        if (interfaceForModel != null) {
            interfaceForModel.onSexChanged(sexMan);
        }
    }

    public void setInterfaceForModel(InterfaceForModel interfaceForModel) {
        this.interfaceForModel = interfaceForModel;
    }
}


4、接下来就是在activity/fragment或present中,将model的值写入view中: 这里只需要将view赋值的方法写在接口实例的对应方法中即可。

然后神奇的效果就出来了,在任何地方改变model的值,view的内容也会跟着变。

model.setInterfaceForModel(new InterfaceForModel() {
            @Override
            public void onNameChanged(String name) {
                mTvName.setText("姓名:" + name);
            }

            @Override
            public void onAgeChanged(int age) {
                mTvAge.setText("年龄:" + age);
            }

            @Override
            public void onSexChanged(boolean sex) {
                mTvSex.setText(sex ? "男" : "女");
            }
        });


Demo链接:http://download.csdn.net/detail/wanggsx20080817/9741284


效果如下:







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值