android架构组件之(LiveData)

参考文章:

1.Android架构组件(二)——LiveData

2.Google官方推出的Android架构组件系列文章(四)LiveData

注:本本章暂时只做简单的使用介绍,不作原理探究

使用方法

1.导入依赖

  implementation 'android.arch.persistence.room:runtime:1.1.1'
    annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'

2.使用LiveData有两种方法

     方法一

       a.创建一个数据类继承ViewModel

/**
 * description:创建数据类
 * 1.创建一个数据类继承ViewModel
 * 2.在类中声明MutableLiveData<T>的属性
 * 3.对属性设置get方法
 * @author:mick
 * @time:2018/11/16
 */
public class UserInfModel extends ViewModel {
    MutableLiveData<String> mUserName;

    public MutableLiveData<String> getUserName() {
        if (mUserName == null) {
            mUserName = new MutableLiveData<>();
        }
        return mUserName;
    }
}
b.在activity中使用
    
    private UserInfModel mUserInfModel;
//1初始化数据类
    mUserInfModel = ViewModelProviders.of(this).get(UserInfModel.class);
//2.设置观察者
    mUserInfModel.getUserName().observe(this,new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                //在这里执行数据类中数据改变的操作
                tv_show.setText(s);
            }
        });

//3.改变数据
    findViewById(R.id.btn_change).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mUserInfModel.getUserName().setValue("我是改变之后的民办自");
            }
        });

方法二

a.创建数据类

/**
 * description:
 * 1.创建数据类继承LiveData<T>
 *
 *
 * @author:mick
 * @time:2018/11/16
 */
public class UserInfoModelString extends LiveData<String> {
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        //这里条用setvalue是为了让观察者接收到消息执行onchange方法
        setValue(name);
    }
   // 此方法是当处于激活状态的observer个数从0到1时,该方法会被调用。
    @Override
    protected void onActive() {
        super.onActive();
    }
    //此方法是当处于激活状态的observer个数从1变为0时,该方法会被调用。
    @Override
    protected void onInactive() {
        super.onInactive();
    }
}

b.在activiy中使用

        private UserInfoModelString mUserInfoModelString;
//1.初始化数据类
        mUserInfoModelString = new UserInfoModelString();
//2.设置观察者
        mUserInfoModelString.observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
            //这里是值改变后执行的方法
                tv_show.setText(s);
            }
        });
//3.改变值
        findViewById(R.id.btn_change).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mUserInfoModelString.setName("我是改变之后的值");

            }
        });

3.LiveData的变换

待续.......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值