DataBinding使用

使用:

1、Gradle文件中添加  android {

                                              …

                                              dataBinding {

                                                          enabled =true

                                                                    }

                                                       }

2、将普通的布局变成databinding布局   :alt+回车键

Binding生成规则:

默认生成规则:xml通过文件名生成,使用下划线分割大小写。

比如activity_demo.xml,则会生成ActivityDemoBinding,item_search_hotel则会生成ItemSearchHotelBinding。

view的生成规则类似,只是由于是类变量,首字母不是大写,比如有一个TextView的id是first_name,则会生成名为firstName的TextView。

们也可以自定义生成的class名字,只需要:<data class=“ContactItem”>…</data> 这样生成的类就会变成ContactItem。

基本使用

生成Binding实例

所有Binding实例的生成都可以通过DataBindingUtil进行,方法名与该view的原inflate方法一致,如activity仍然为setContentView,只是增加了参数因为需要获得activity。

去除findViewById

使用了Data Binding后,我们再也不需要findViewById,因为一切有id的view,都已经在Binding类中被初始化完成了,只需要直接通过binding实例访问即可。

变量绑定

使用data标签,我们就可以在xml中申明变量,在其中使用该变量的field,并通过binding实例set进来。

binding.setEmployee(employee);// 或者直接通过setVariable

binding.setVariable(BR.employee, employee);

事件绑定

严格意义上来说,事件绑定也是一种变量绑定。我们可以在xml中直接绑定

android:onClick

android:onLongClick

android:onTextChanged

方法引用

通常会在java代码中定义一个名为Handler或者Presenter的类,然后set进来,方法签名需和对应listener方法一致。

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="输入 First Name"

android:onTextChanged="@{presenter::onTextChanged}"/>

public   class Presenter {

      public void onTextChanged(CharSequence s, int start, int before, int count) {

           }

   }

监听器绑定(lambda)

presenter.onClickListenerBinding(employee)}"> presenter.onClickListenerBinding(employee)}"> presenter.onClickListenerBinding(employee)}"> presenter.onClickListenerBinding(employee)}">android:onClick="@{() -> presenter.onClickListenerBinding(employee)}"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容