美文网首页Android-DataBinding
DataBinding(08)-生成的绑定类

DataBinding(08)-生成的绑定类

作者: 代码多哥 | 来源:发表于2023-08-27 22:13 被阅读0次

    DataBinding库会生成用于访问布局的变量和视图的绑定类。本文档展示了如何创建和自定义生成的绑定类。
    生成的绑定类将布局变量与布局中的视图链接起来。您可以自定义绑定的名称和包。所有生成的绑定类都继承自ViewDataBinding类。
    框架会为每个布局文件生成一个绑定类。默认情况下,类的名称将布局文件的名称是转换为Pascal大小写并添加Binding后缀。因此,例如,如果布局文件名为activity_main.xml,则相应生成的类为ActivityMainBinding。此类保存从布局属性到View的所有绑定,并知道如何为绑定表达式赋值。

    生成绑定对象

    绑定对象在inflate布局后立即创建,以确保布局中设置有表达式的View的层次结构在绑定数据之前不会被修改。将对象绑定到布局的最常见方法是在绑定类上使用静态方法。您可以使用绑定类的inflate() 方法来加载View层次结构并将对象绑定到它,如以下示例所示:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        val binding: MyLayoutBinding = MyLayoutBinding.inflate(layoutInflater)
    
        setContentView(binding.root)
    }
    
    

    还有另外一个重载的inflate()方法,它除了LayoutInflater对象外,还接受ViewGroup对象,如以下示例所示:

    val binding: MyLayoutBinding = MyLayoutBinding.inflate(getLayoutInflater(), viewGroup, false)
    
    

    如果使用不同的机制对布局进行inflate,则可以将其单独绑定,如下所示:

    val binding: MyLayoutBinding = MyLayoutBinding.bind(viewRoot)
    
    

    有时您事先不知道绑定类型。在这种情况下,可以使用DataBindingUtil类创建绑定,如以下代码片段所示:

    val viewRoot = LayoutInflater.from(this).inflate(layoutId, parent, attachToParent)
    val binding: ViewDataBinding? = DataBindingUtil.bind(viewRoot)
    
    

    如果在Fragment、ListView或RecyclerView适配器中使用数据绑定项,则可能更喜欢使用绑定类或DataBindingUtil类的inflate()方法,如以下代码示例所示:

    val listItemBinding = ListItemBinding.inflate(layoutInflater, viewGroup, false)
    // or
    val listItemBinding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false)
    
    

    译者备注:

    • ListItemBinding对应的是一个list_item.xml布局文件

    相关文章

      网友评论

        本文标题:DataBinding(08)-生成的绑定类

        本文链接:https://www.haomeiwen.com/subject/olwwmdtx.html