Android DataBinding的使用(一)

一、什么是DataBinding?

    DataBinding 是谷歌官方发布的在android上对MVVM设计模式的一个实现框架,其作用是实现数据绑定, 
    Android DataBinding主要实现了View和ViewModel的双向绑定,包括用户的响应。并且实现了自动更新。
    
DataBinding优点:
     1.大量减少Activity内的代码。
     2.数据能够单向或者双向绑定到布局文件当中,这样有助于防止内存泄露,
        而且能够自动进行空检测以避免空指针异常

二、在androidStudio上如何使用DataBinding ?

① 在你的module中的build.gradle文件中添加dataBinding配置:
(添加完成后要编译一下)

	android {
   		    ......
             dataBinding {
                   enabled = true
             }
     }  
②设置布局(这里以 activity_mail.xml 为例)

在这里插入图片描述

③Bean类写法
package com.qy.databinddemo;

public class UserBean{
	private  String  name;
	private  String  csdnAddress;
		
	public UserBean(String name,String csdnAddress){
		   this.name=name;
		   this.csdnAddress=csdnAddress;
	}
		
	public  String  getName(){
		  return name;
	}
		
	public void setName(String name){
		    this.name=name;
	}
		
	public String getCsdnAddress(){
		    return csdnAddress;
	}
		
	public void setCsdnAddress(String csdnAddress){
		   this.csdnAddress=csdnAddress;
	}
		
	@Override
	public String toString(){
		  return "UserBean{"+
		         "name='"+name+'\''+
		          ",csdnAddress='"+csdnAddress+'}';
	}
}

④ 布局写法

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

    <data>
        <!--
            type指的是类的路径(也就是我们Bean类的路径)
        -->
        <importtype="com.qy.databinddemo.UserBean"/>

        <!--name指的是标签名-->
        <variable
            name="data"
            type="UserBean" />
    </data>

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

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:gravity="center"
            android:text="@{data.name,default=默认值}" />
        <!--注意,default是用来在没有赋值的情况下展示默认值的-->

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:gravity="center"
            android:text="@{data.csdnAddress}" />
    </LinearLayout>
</layout>

⑤ MainActivity中的写法

 public class MainActivity extends AppCompatActivity{

        @Override
        protectedvoidonCreate(BundlesavedInstanceState){
            super.onCreate(savedInstanceState);
            //默认情况下,绑定类的名称是基于布局文件的名称生成的,
            //它是将布局文件名开头大写并加上“Binding”而成。
            //这个类拥有所有从属性(例如用户变量)到布局的绑定关系并知道如何赋值绑定表达式。
            //最简单的方法创建绑定的方法就是通过反射。
            ActivityMainBinding binding = 
                        DataBindingUtil.setContentView(this,R.layout.activity_main);

            UserBean user = new UserBean("苏青岩","https://blog.csdn.net/qq_35953420");
            //绑定数据
            binding.setData(user);
            //修改idtextView1的控件的内容
            //binding.textView1.setText("苏青岩大帅哥");

        }
    }

到这里就可以实现效果了,当然 我们的DataBinding 可不仅仅只有这些小本事,这是最简单的一个使用案例而已,同时它还可以使用在Fragment中、Recyclerview 中!!!
(这两天内我会把DataBinding的其他功能也都写上去的…)

在Fragment中使用部分代码


public class Frag extends Fragment {
    
    private ViewDataBinding binding;

    @Override
    public View onCreateView(LayoutInflater inf, ViewGroup container, Bundle state) {
        binding = DataBindingUtil.inflate(inf, R.layout.frag, container, false);
        return binding.getRoot();
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值