android data binding实践之:ViewDataBinding

本文详细介绍了Android Data Binding库中的ViewDataBinding,包括自动化view管理、事件处理,特别是Method References和Listener Bindings的使用。通过ViewDataBinding,开发者可以避免大量手动查找视图的操作,并使用表达式轻松处理事件,提升代码的可读性和效率。
摘要由CSDN通过智能技术生成

android data binding实践之:ViewDataBinding

使用过data binding的应该都知道,在编译之后,这个库会为我们生成两种java文件。

  • BR.java:

    这个文件主要是给我们在XML文件中每个标签设置的variable以及被Bindable注解的属性添加一个静态的int类型的索引,在以后对这些variable进行操作的时候都可以使用这个索引id作为参数。

  • ViewDataBinding的相应的子类:

    每一个绑定的XML布局文件都会生成一个以该布局文件名称作为前缀(默认情况下)的ViewDataBinding的相应的子类。在这个文件中主要的处理逻辑主要包括:

    • 自动化view管理
    • 用户事件监听处理
    • 变量管理
    • data binding逻辑流

自动化view管理

当我们在XML布局文件中,设置了View的”android:id”属性之后,在生成的ViewDataBinding子类当中会生成一个声明为 public final 的属性值,属性的名称就是我们定义的id的值。而对于那些没有被设置ID的view则会声明为 private final 。因此当我们给view设置了id之后可以不必再自己声明和初始化这些view。

首先XML布局声明如下

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable
            name="user"
            type="net.uni_unity.databindingdemo.model.ObserVableUser"/>
        <variable
            name="activity"
            type="net.uni_unity.databindingdemo.SecondActivity"/>
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="@{user.firstName}"/>
        ... 
        <Button
            android:onClick='@{()->activity.onViewClick("click")}'
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="ListenerBinding"/>

    </LinearLayout>
</layout>

在生成的ViewD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值