DataBinding介绍
DataBinding 是谷歌官方发布的一个框架,其作用是实现数据绑定(Data binding),同时,也是因为有它,可以在安卓(Android)上实现MVVM架构。关于MVVM架构,请看完 Android 安卓DataBinding用法(一) 和 Android 安卓DataBinding用法(二) 之后,再看我博客详解!
开始准备
本篇文章是深一层理解 DataBinding 用法,在使用DataBinding之前,需要先往Modle中android之下加入dataBinding,如下。
......
android {
......
dataBinding {
enabled = true
}
}
深入了解 DataBinding
再上一期(Android 安卓DataBinding用法(一)·基础)讲了 DataBinding 的基础用法,如果你还没有看,请先去看完之后,再看此文章!
在代码中对TextView进行赋值
//使用ActivityMainBinding为id是textView2的TextView赋值
activityMainBinding.textView2.setText("我是新的值");
TextView默认值
根据上篇文章紧接着,如果在People没有赋值的时候,People的值是空的,此时TextView什么都不显示,而这事恰巧又一个默认值显示在TextView之上,这时候就需要用到 default ,如下写法,值不能出现空格。
<TextView
......
android:text="@{data.name,default = HelloWorld}"
...... />
这是以在TextView上输出 HelloWorld 举例!如下图:
使用class属性
你也可以通过对data标签使用 class 属性来对 ViewDataBinding 进行命名,如下:
<data class="ActivityMainBinding2">
<import type="com.lkdot.mvvm.bean.PeopleBean" />
<variable
name="data"
type="PeopleBean" />
</data>
当命名为 ActivityMainBinding2 之后,就要在Activity中修改了!
将其 ActivityMainBinding 修改为 ActivityMainBinding2
private ActivityMainBinding2 activityMainBinding2;
当然 DataBinding 不仅仅只是有这些功能,也不仅仅是只有这一种使用场景,它还可以用于Fragment中,甚至Recyclerview(列表中)
在Fragment中实现:
public class ThisFragment extends Fragment {
private ThisFragmentBinding thisFragmentBinding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
thisFragmentBinding = DataBindingUtil.inflate(inflater, R.layout.this_fragment, container, false);
return thisFragmentBinding.getRoot();
}
}
RecyclerView自然也不用多说,也可以通过这样的方式进行绑定!
下一期:Android 安卓DataBinding(三)·单向绑定 BaseObservable