databinding学习(1)

详解Android Data Binding在项目中的应用与实践
本文深入解析了Android项目中如何利用Data Binding技术简化UI与业务逻辑的耦合,通过具体实例展示了从配置到实际使用的全过程,包括Gradle依赖管理、布局文件中的数据绑定设置、Java代码中实体类的创建与使用,以及如何解决常见的问题和注意事项。重点突出了Data Binding在提升开发效率、减少代码冗余方面的优势。

(1)在工程的gradle中声明

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
    classpath "com.android.databinding:dataBinder:1+"

}

(2)在模块的gradle中声明

apply plugin: 'com.android.databinding'

(3)声明一个数据模型

public class User {
    public  String firstName ;
    public  String lastName ;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

(4)设置layout中的数据源

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="user"
            type="com.example.lin.myapplication.model.User"/>
    </data>

必须设置 <layout>标签为根目录


<TextView
    android:layout_width="wrap_content"
    android:text="@{user.firstName}"
    android:layout_height="wrap_content" />
<TextView
    android:layout_width="wrap_content"
    android:text="@{user.lastName}"
    android:layout_height="wrap_content" />

在view上绑定数据

(5)在java代码中创建实体类对象

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
User user = new User("lin", "zhibiao");
binding.setUser(user);

注意: 引入布局的方法使用

注意: 修改 Project 的 build.gradle,保持 gradle 和 dataBinder 都是最新版,否则会由于 Android Studio 的一次升级导致 Data Binding 失效。 classpath 'com.android.tools.build:gradle:1.3.+' classpath 'com.android.databinding:dataBinder:1.+'

发现1: 实体类可以声明为私有变量,实现set get方法,依然可以在xml布局文件中使用 @{user.firstName}找到数据

发现2: 设置一个按钮 点击事件为修改数据模型对象的属性 ,界面上并没有变化,看来并没有双向绑定?

发现3: xml 的文件名叫 activity_basic.xml,那么生成的类就是 ActivityBasicBinding

如果发生出现错误类似Error:Failed to resolve: com.android.databinding:library:1.0-rc1

解决办法:更新SDK的Extras下的Android Support Repository和Android Support Library包,更新后就可以在sdk/extras/android/m2repository/com/android/databinding的 文件夹中的adapter和library文件夹中发现1.0-rc1的身影了

转载于:https://my.oschina.net/u/1446823/blog/507926

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值