ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DataBinding的用法

2019-06-26 11:00:07  阅读:370  来源: 互联网

标签:layout setContentView UserBean 用法 ActivityMainBinding activity DataBinding main


 

一、基本介绍

DataBinding数据绑定库是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。这是官方给出的介绍。

那么为什么要使用DataBinding?

首先,再也不需要使用findViewById()来初始化控件了;

另外,更新UI不再需要切换到UI线程,而是可以通过数据分解映射到各个View。

 

二、学习教程

https://developer.android.com/topic/libraries/data-binding

 

三、使用示例

 在build.gradle中android闭包中添加配置,即可使用DataBinding库:

  dataBinding {
        enabled = true
    }

之后可以在activity_main.xml中添加如下布局:

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

    <data>
        <variable
            name="user"
            type="com.cy.test.mvvmdatabinding.UserBean" />
    </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:text="@{user.name}" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@{String.valueOf(user.age)}" />
    </LinearLayout>
</layout>

首先需要注意几个地方:

1、最外层节点为layout

2、添加了data标签,variable顾名思义即变量,指向与该布局对应的数据源,name即变量名,type即是变量类型UserBean,这个变量就是可以与布局当中的每个View一一对应的数据源。

3、text中可以使用text="@{user.name}"直接引用UserBean中的值。

MainActivy.java中的代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        UserBean userBean = new UserBean ("张三", 25);
        binding.setUser(userBean );

    }
}

原有的setContentView(R.layout.activity_main)被注释掉了,

取而代之的是ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

DataBindingUtil是库中的一个类,setContentView(this, R.layout.activity_main)将布局传入,

然后生成一个ViewDataBinding类,ActivityMainBinding继承于ViewDataBinding,初次写入可能会报错,编译以后就可以引入这个类ActivityMainBinding,它通过引入布局文件名称生成。

运行结果如下:

更多思考之后整理吧~~~

标签:layout,setContentView,UserBean,用法,ActivityMainBinding,activity,DataBinding,main
来源: https://www.cnblogs.com/chen-ying/p/11088366.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有