首页 > 解决方案 > Android 数据绑定 DatabindingUtil 与绑定类

问题描述

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

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

对比

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

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

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

谢谢!

标签: androidperformanceandroid-databindingandroid-jetpacklayout-inflater

解决方案


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

DataBindingUtil文档中您可以看到。

膨胀

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

仅当 layoutId 事先未知时才使用此版本。否则,使用生成的 Binding 的 inflate 方法来确保类型安全的膨胀。

一种选择是膨胀,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();
}

在科特林

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

如果您的布局绑定类未生成@See this answer


推荐阅读