当前位置: 首页 > 知识库问答 >
问题:

Android数据库绑定数据库Util vs绑定类

司寇阳朔
2023-03-14

我想知道以下内容之间有什么区别:

binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);

binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);

有任何性能差异吗?
每个的首选用例是什么?

任何其他信息都将不胜感激!

谢谢!

共有2个答案

孙辰阳
2023-03-14

事实上,这两件事都是一样的,不会影响表演。只有一个小的区别,我注意到的是,如果你确定你想要膨胀的布局,那么你可以使用

< code > binding = draweritemprimarybinding . inflate(inflater,parent,false);

但是如果您想要动态绑定类,那么可以使用

int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);

so < code > draweritemprimarybinding . inflate(inflater,parent,false);将始终返回我们的< code > DrawerItemPrimaryBinding 类。如果我们必须使用< code > databindingutil . inflate(inflater,layoutId,parent,false);然后我们可以根据需要进行造型。

谢谢你。

束阳旭
2023-03-14

按照Android文档中的建议使用< code > Binding class ' s inflate 。

在DataBindingUtil类留档中可以看到。

T inflate (LayoutInflater inflater, 
                int layoutId, 
                ViewGroup parent, 
                boolean attachToParent)

仅当layoutId事先未知时才使用此版本。否则,请使用生成的绑定的充气方法以确保类型安全充气。

一种选择是通过< code>DataBindingUtil进行膨胀,但前提是您没有生成绑定类。

您已经生成了绑定类,请使用该类而不是使用 DataBindingUtil

在Java中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    HomeFragmentBinding binding = HomeFragmentBinding.inflate(inflater, container, false);
    //set binding variables here
    return binding.getRoot();
}

静态编程语言

lateinit var binding: HomeFragmentBinding 
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    binding = HomeFragmentBinding.inflate(inflater, container, false)
    return binding.root
}

如果未生成布局二进制类,@See此答案。

 类似资料:
  • 在使用新的数据绑定api时,我发现无法绑定到“style”属性。编译器抱怨找不到样式。然而,如果我简单地将样式设置为原样,它会发现它很好。例如: 不工作: 作品: 错误: 错误:任务“:app:compiledBugJavaWithJavaC”的执行失败。 JAVAlang.RuntimeException:发现数据绑定错误。****/数据绑定错误****msg:标识符必须具有XML文件中的用户定

  • 数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </

  • attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),

  • submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt

  • with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span

  • foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中。在foreach绑定中,我们可以使用if、with等嵌套绑定。 示例代码: //.W片段 <table> <thead> <tr><th>First name</th><th>Last name</th></tr> </thead> <tbody bind-foreach="people"> <tr>