• Databinding在自定义ViewGroup中如何绑定view


    首先我们在平时开发中使用databinding的时候大部分都是在Activity或者fragment中,但我们一旦在自定义ViewGroup中使用的时候就会出现问题

    问题描述:

        我们在自定义LinearLayout中使用DataBinding的时候:

            1:无法使用setContentView(Activity activity, int layoutId)

            2:使用inflate(LayoutInflater inflater, int layoutId,@Nullable ViewGroup parent, boolean attachToParent)方法无效。

    看代码

    public TitleEditTextView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        View view = inflate(context, R.layout.view_title_edit,this);
           mBinding = DataBindingUtil.bind(view);
    }

    看似没什么问题,但一旦运行后就会发现会报错 

    意思也很简单,就是View is not a binding layout  没有绑定上view,这就很奇怪了,那怎么办?

    解决方法:

    打开这个目录,找到这个类打开

    搜索到  ViewGroup绑定的R.layout.view_title_edit

    这个里面有个判断条件就是 tag

    那么我们就知道了其实我们缺少的是tag

     

    tag要设什么也就清楚了

    这是我们回到原来的地方

    public TitleEditTextView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        View view = inflate(context, R.layout.view_title_edit,this);
        //加上这一句,tag内容和上面的tag一样就可以了  
        view.setTag("layout/view_title_edit_0");    
         mBinding = DataBindingUtil.bind(view);
    }

    再次运行程序就不会报错了。记录仅供参考。

  • 相关阅读:
    教你用笔记本充当无线路由,wifi上网了!!!
    SQL重复记录查询
    ==、object.Equals()、object.ReferenceEquals()
    SeriesChartType
    容易被忽视的装箱问题
    [转]Anonymous type and implicit type
    as、is、GetType()
    [转]dataGridView控件DateTime列插入DateTimePicker
    .NET(C#):理解值类型/引用类型,装箱/拆箱,Object类
    通过其轴标签沿 X 轴对齐不同系列中的数据点
  • 原文地址:https://www.cnblogs.com/woaixingxing/p/9150561.html
Copyright © 2020-2023  润新知