1.配置
只需要在model builder.gradle中android中配置如下即可:
dataBinding {
enabled = true
}
如果还想使用lambda表达式,则再加入①②
①:在model 中添加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
②在项目builder.gradle中添加
dependencies {
……
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
allprojects {
repositories {
……
apply plugin: 'me.tatarka.retrolambda'
}
}
2.配置贴图
root builder.grale
model builder.grale
3.简单使用
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="true"
tools:context="com.databding.MainActivity">
<data>
<variable
name="title"
type="com.databding.entity.User"></variable>
<variable
name="presenter"
type="com.databding.MainActivity.Presetner"></variable>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入"
android:onTextChanged="@{presenter.onTextChanged}" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{title.name}" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{presenter.onClick}"
android:text="@{title.info}" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{()-> presenter.CustomClick(title)}"
android:text="@{title.add}" />
</LinearLayout>
</layout>
package com.databding;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import com.databding.databinding.DataMainBinding;
import com.databding.entity.User;
public class MainActivity extends AppCompatActivity {
private User user = new User("吴新喜", "Android学习小学生", "安徽亳州");
DataMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.data_main);
binding.setTitle(user);
binding.setPresenter(new Presetner());
}
public class Presetner {
public void onTextChanged(CharSequence s, int start, int before, int count) {
user.setName(s.toString());
binding.setTitle(user);
}
public void onClick(View view) {
Toast.makeText(MainActivity.this, "HHAHA", Toast.LENGTH_SHORT).show();
}
public void CustomClick(User user) {
Toast.makeText(MainActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
}
}
}