赞
踩
DataBinding下 使用include包括对象的传递,事件的监听。
include的布局如下:
custom_home.xml
- <layout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:binding="http://schemas.android.com/apk/res-auto">
- <data>
- <variable
- name="user"
- type="com.yc.bean.User" />
- <variable
- name="onImgClick "
- type="android.view.View.OnClickListener" />
-
- </data>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:orientation="horizontal">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:onClick ="@{onImgClick }"
- android:src="@mipmap/ic_home_position"
- />
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@{user.name}"
- android:textColor="@color/colorBarText"
- android:textSize="12sp" />
- </LinearLayout>
- </Layout>
-

这里要使用对象和监听的话,就要先声明相应的variable
main.xml 中代码:
- <layout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:binding="http://schemas.android.com/apk/res-auto">
- <data>
- <import type="com.yc.ui.home.HomeFragmentViewModel"/>
- <variable
- name="viewModel"
- type="HomeFragmentViewModel" />
- <variable
- name="user"
- type="com.yc.bean.User"/>
- </data>
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- .......
- <include android:id="@+id/include"
- layout="@layout/custom_home"
- binding:onImgClick ="@{viewModel.onImgClick}"
- binding:user="@{user}"/>
-
- </FrameLayout>
-
- </layout>
-
-

binding:user=@{user}
这里 binding:include中变量名=@{ 传进去的监听或者实体对象}
名字必须对应不然找不到 类名也必须相同。
viewModel中方法:
- public View.OnClickListener onImgClick = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ToastUtils.showShort("点击了头像");
- }
- };
————————————————
版权声明:本文为CSDN博主「云梦星河」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yunmengxinghe/article/details/107792376
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。