Android的Databinding-需要使用控件id,listener以及布局有include的场景

Posted lee0oo0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android的Databinding-需要使用控件id,listener以及布局有include的场景相关的知识,希望对你有一定的参考价值。

主的布局xml文件:

 1 <layout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:bind="http://schemas.android.com/apk/res-auto">
 3 
 4     <data>
 5 
 6         <import type="com.liangfeizc.databinding.model.User" />
 7         <variable
 8             name="user"
 9             type="User" />
10         <variable
11             name="listener"
12             type="com.liangfeizc.databinding.listener.OkListener" />
13         <variable
14             name="okText"
15             type="String" />
16     </data>
17 
18     <LinearLayout
19         android:layout_width="match_parent"
20         android:layout_height="match_parent"
21         android:orientation="vertical">
22 
23         <include
24             android:id="@+id/layout_input"
25             layout="@layout/layout_input" />
26 
27         <include
28             layout="@layout/user"
29             bind:user="@{user}" />
30 
31         <include
32             layout="@layout/layout_btn_ok"
33             bind:okText="@{okText}"
34             bind:listener="@{listener}"/>
35     </LinearLayout>
36 </layout>


本布局一共包含3个include布局,第一个是一个普通的布局,里面没有<data></data>, 考虑的就是如何通过id获取控件的引用。binding.layoutInput.etName   binding是绑定的对象,layoutInput和etName就是Id,至于为啥没有了下划线_ , 因为这个id也是自动生成的。

第二个布局,需要传递User这个pojo类,所以要在<data>中引入,而同时也需要定义一个类别(看上面代码第二行)把user对象进行传递。

第三个布局较为复杂,需要传递listener和text,同样也需要一个类别进行传递。

 

本节参考代码。



 

以上是关于Android的Databinding-需要使用控件id,listener以及布局有include的场景的主要内容,如果未能解决你的问题,请参考以下文章

Android DataBinding笔记

在android studio2.0中,配置databinding问题

Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions

Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions

Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions

Android开发:关于Databinding与Viewbinding以及kotlin-android-extensions