Android MVVM DataBinding在自定义ViewGroup中的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y505772146/article/details/86749977

最近在使用Android MVVM DataBinding,在使用到自定义ViewGroup的时候遇到了点问题,特意在此记录一下,以备查阅。
使用场景就是在Activity的layout文件中,还使用到了自定义的ViewGroup,例如:

<layout 我的代码
	...
	<variable
		name="loginModel"
		type="package.LoginModel"
	>
	...
	<MyCustomVIew
		...
	/>
	...

MyCustomVIew如下:

public class MyCustomVIew extends LinearLayout {
	... 我的代码

但是我们的databinding的代码都是在Activity中,那么我怎么使用自定义View中的数据绑定呢?
具体解决方案如下:
首先是layout中得这么用:

<layout 我的代码
	...
	<variable
		name="loginModel"
		type="package.LoginModel"
	>
	</variable>
	...
	<MyCustomVIew
		app:loginModel="@{loginModel}" //这里传入我们activity层的model
	/>
	...

自定义View中的代码如下:

public class MyCustomVIew extends LinearLayout {
	private MyCustomViewBinding binding;//我们的layout文件名就是my_custom_view
	... 我的代码
	public MyCustomVIew (...) {
    ...
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    	binding= DataBindingUtil.inflate(inflater, R.layout.my_custom_view, this, true);//第四个参数为true很重要,让我们的自定义View可以正常显示
   		... 我的代码
	}

	public void setLoginModel (LoginModel obj) {//set方法
	    binding.setLoginModel (obj);
	}
	... 我的代码

这里的代码由于公司的保密原因都是我手打的,可能拼写会有错误,但是解决我这个问题的思路基本如上,希望可以帮助到大家,在这里对我自己也是一个笔记的作用。

猜你喜欢

转载自blog.csdn.net/y505772146/article/details/86749977