我在想以下两者之间有什么不同:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
对比
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
是否有性能差异?
每个的首选用例是什么?
其他任何信息将不胜感激!
谢谢!
我在想以下两者之间有什么不同:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
对比
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
是否有性能差异?
每个的首选用例是什么?
其他任何信息将不胜感激!
谢谢!
使用Binding类的inflate方法,这是在Android文档中推荐的方法。
在DataBindingUtil类的文档中可以查看相关信息。
inflate
T inflate (LayoutInflater inflater, int layoutId, ViewGroup parent, boolean attachToParent)
Use this version only if layoutId is unknown in advance. Otherwise, use the generated Binding's inflate method to ensure type-safe inflation.
一种选项是通过DataBindingUtil
进行膨胀,但仅当您没有生成的绑定类时。
如果您已经生成了binding class
,请使用该类,而不是使用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();
}
在 Kotlin 中
lateinit var binding: HomeFragmentBinding
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = HomeFragmentBinding.inflate(inflater, container, false)
return binding.root
}
实际上,这两个东西的工作方式是相同的,不会影响性能。
我注意到的唯一的小区别是,如果您确定要填充哪个布局,则可以使用
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
但是,如果您想要动态绑定类,则可以使用
int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
DrawerItemPrimaryBinding.inflate(inflater, parent, false);
会始终返回我们的DrawerItemPrimaryBinding
类。如果我们必须使用DataBindingUtil.inflate(inflater, layoutId, parent, false);
,那么我们可以根据需要进行强制类型转换。
谢谢。