开启databinding_Android Jetpack 架构组件 -- dataBinding

78dbc00ee0d27d0fbf231ae4902489ad.png

Android Jetpack 架构组件 -- dataBinding

在10月底开始学习JetPack ,如下笔记目的是记录自己的学习过程。

配置

module : app 中的build.gradle 开启,

android{
...
    defauleConfig{
    ...
            dataBinding{
            enabled = true
        }
    }
}
​

或者

android{
...
    defauleConfig{
    ...
        dataBinding.enabled = true
        }
    }
}

add dependencies(添加依赖)

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

sync now 一下

配置成功后,开始编写我们的ViewModel,用这个ViewModel来存放我们界面的数据

数据 -- MyViewModel

public class MyViewModel extends ViewModel {
​
    private MutableLiveData<Integer> number;
​
    public MutableLiveData<Integer> getNumber() {
        if (number == null) {
            number = new MutableLiveData<>();
            number.setValue(0);
        }
        return number;
    }
​
    public void addNumber(){
        number.setValue(number.getValue() + 1);
    }
}

Lauyot 布局 -- MainActivity

主要是放一个TextView 和 一个Buttom

ok之后,在布局最外面(父布局),alt +enter 或者点击小电灯泡。

9260ad6b1c3a7bd58a49459ebe8e23d3.png

转换成数据绑定布局

成功后,将变成由<layout>标签包裹的,还多了<data>标签

f3ddb7cf7749fdbca8abeb1c9aa529a2.png

加入我们的MyViewModel数据

<variable
    name="data"
    type="com.chenjiahua.androidmvvmtest.MyViewModel" />

name 随便起,没有需要注意的

type 我们创建的MyViewModle

需要把数据在界面显示,

TextView中的

android:text="@{String.valueOf(data.number)}"

Buttom中实现点击

android:onClick="@{()->data.addNumber()}"

data是我们的起的数据来源的name,就是我们类型type -- MyViewModel

我个人理解是 : MyViewModel data = ...;

number 是data的域,addNumber()是方法。

需要提的是使用方法需要用的是lambda表达式

@{...}

界面显示 MainActivity

在布局转换成功为data binding layout 后,gradle编译器会自动生成一个与之对应的绑定类

绑定类的命名规则:驼峰化xml文件名 + Binding.java(驼峰命名 :单词首字母大写 属性,方法:第一个单词首字母小写,类,接口则是首字母都大写)

public class MainActivity extends AppCompatActivity {
​
    ActivityMainBinding mMainBinding;
    MyViewModel mMyViewModel;
​
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        mMyViewModel = new ViewModelProvider(this).get(MyViewModel.class);
        mMainBinding.setData(mMyViewModel);
        mMainBinding.setLifecycleOwner(this);
    }
}

结束

后期需要补充添加有关recyclerView的数据绑定实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值