DataBinding初学者的入门

一:如何使用

1:gradle配置

  在android中添加: dataBinding { enabled = true }

2:在xml布局文件中添加layout标签

  <layout> // 原来的layout </layout>

3:在Activity中绑定布局,获取binding实例  

  通过DataBindingUtil.setContentView获取binding实例。

  binding默认生成规则:xml通过文件名生成,使用下划线分割大小写。
  比如activity_main.xml,则会生成ActivityMainBinding,item_search_hotel则会生成ItemSearchHotelBinding。

  @Override
  protected void  onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
  }

4:在xml中声明变量

  data标签中创建变量,variable表示声明的变量,其中,name表示变量名,type表示变量类型。

 <layout>
 <data>   <variable name="bean" type="com.demo.client.DataBindingBean"/>   </data>
  //原来的layout
  </layout>

5.xml中使用变量

  <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:text="@{bean.text}"         android:textColor="@color/color_7" android:textSize="@dimen/xiaomiMyTextSize1" />

6.在Activity中创建数据绑定类和设置变量值(在第3点的基础上)

@Override
  protected void  onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
  DataBindingBean dBinding = new DataBinding();
  dBinding.setText("hahahaha");
  bingding.setBean(dBinding);
  }

二.事件监听 

 1.在Activity中创建内部类
public class Eventable{
public void onClick(View view) {
//处理的点击事件
Toast.makeText(MainActivity.this,"111111111",Toast.LENGTH_SHORT).show();
}
  //文字改变的事件监听
public void onTextChanged(CharSequence s,int start,int before,int c){
elements.setText(s.toString());
binding.setBean(elements);
}
}


2:在布局xml中<data>标签里
<variable
name="present"
type="com.ampm.databding.MainActivity.Eventable"/>
3:在需要处理事件的view里
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
  //文字改变的事件
android:onTextChanged="@{present.onTextChanged}"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{bean.text}"
  //文字点击的事件
android:onClick="@{present.onClick}"/>
 

posted @ 2017-03-04 13:57  weiren123123  阅读(298)  评论(0编辑  收藏  举报