zoukankan      html  css  js  c++  java
  • DataBinding的用法

    一、基本介绍

    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,它通过引入布局文件名称生成。

    运行结果如下:

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

    菜甜二的学习笔记and总结啊。。。总会遇到挫折,可是还是要保持开阔的心态才能开心的学习啊,坚持吧。
  • 相关阅读:
    玩聚SD:感谢曹增辉的博客点评
    Social Dialogue征集IT意见领袖和优秀博客的RSS地址
    微软+Powerset>GoogleAdSense还是>GoogleSearch?
    1989旧金山地震:动物预测成功的非经典案例
    随手小记·危机来了与贪婪恐惧
    玩聚SD:感谢风言疯语之IT罗盘对玩聚SD的推荐
    独立思考之慎用孤例
    08软件技术英雄会:一次比一次接近完美
    独立思考之手动check
    MyBatisSpring MapperScannerConfigurer
  • 原文地址:https://www.cnblogs.com/chen-ying/p/11088366.html
Copyright © 2011-2022 走看看