Skip to content

Latest commit

 

History

History
92 lines (85 loc) · 2.98 KB

databinding.md

File metadata and controls

92 lines (85 loc) · 2.98 KB

简单上手体验:

//app module下build.gradle:
android {
...
    dataBinding {
       enabled true
    }
}

//项目根目录下:
//gradle.properties:
android.databinding.enableV2=true
//build..gradle:
allprojects {
    repositories {
        google()
        jcenter()
    }
}

layout中的<data>...</data>就是数据模型,我们通过他来关联layout对应等数据,参数设置就是在data内设置<variable></variable>,例子如下:

//layout: 注意最外层不要设计宽高属性,会无法通过编译,提示duplicate attribute
<?xml version="1.0" encoding="utf-8"?>
<layout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  >
  <data>
    <variable
      name="User"
      type="com.android.jetpacklearning.databing.User"></variable>
  </data>
  
  <android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
      android:id="@+id/top"
      android:text="@{User.firstname}"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent"/>
    <TextView

      android:text="@{User.lastname}"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toBottomOf="@id/top"/>
  </android.support.constraint.ConstraintLayout>
</layout>
//Activity相关代码
@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ac__data_bing);
    ActivityAcDataBingBinding dataBinding = DataBindingUtil
        .setContentView(this, R.layout.activity_ac__data_bing);
    User user = new User("小A", "小B");
    dataBinding.setUser(user);
    //只要给View设置Id,databing就帮我们找到了View,实例和Id近似
    dataBinding.topText.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast.makeText(Ac_DataBing_Easy.this, "topText", Toast.LENGTH_SHORT).show();
      }
    })
  }

结果:

使用可观察数据实体

Binding Adapter

自定义属性,

Thanks