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

最近在使用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);
	}
	... 我的代码

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

发布了162 篇原创文章 · 获赞 619 · 访问量 47万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览