DataBingding的初步了解

2016-09-26  本文已影响0人  雨毅

一,介绍

谷歌去年就推出databinding框架,由于之前一直用的是butterknief,所以一直没有去学习,最近一直听朋友在群里面说该框架是多么的好用,所以忍不住趁着周日学习了一下。

二,初步配置

databinding的使用非常简单,因为是谷歌推出,所以只需要在在build.gradle中配置
<pre>
android {

dataBinding {

enabled =true} }
</pre>
前提是在androidStudio1.5版本以上

三,代码演示

首先列举一个简单的场景,在界面显示姓名和年龄,通过界面中的点击按钮时改变姓名
xml布局

<pre>

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="user"
type="com.hgsoft.cardutils.activity.UserBean"></variable>

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

<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.name}"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.age}"/>
<Button
    android:id="@+id/btn"
    android:text="点击"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</LinearLayout>
</layout>
</pre>
首先可以看出,跟普通布局的差别就是根节点变为<layout>,需要在data节点中声明variable属性,就是对应的你自定义的实体类,name为自己定义的别名,type中包名一定要写全,接下来就是在代码中的体现了。
<pre>
public class DataActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityDataBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_data);
    UserBean userBean=new UserBean("wangbin","24");
    binding.setUser(userBean);

}

}
</pre>
在oncreate方法里面用DataBindingUtil.setContentView代替setcontentview方法,然后调用binding.setuser(user就是在布局中声明的别名),这样就把值赋给了activity的对应控件。
给按钮添加点击事件
<pre>
binding.btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

        }
    });

</pre>

四,优缺点

由于学习时间比较简单,上面介绍只是很简单的使用,但是可以很直观的看出该框架比较简洁,减少了findviewbyid的代码,当然他肯定还有很多强大的地方,需要后面来深入学习,自我感觉针对一些简单的布局使用起来还是很方便,可是复杂的布局可能就有点吃力了,并且androidstudio支持并不是太好,以后空闲时间再深入学习一下,以便对该框架有一个全面的认识。

上一篇下一篇

猜你喜欢

热点阅读