版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
... 我的代码
这里的代码由于公司的保密原因都是我手打的,可能拼写会有错误,但是解决我这个问题的思路基本如上,希望可以帮助到大家,在这里对我自己也是一个笔记的作用。