Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android数据绑定DatabindingUtil vs绑定类_Android_Performance_Android Databinding_Android Jetpack_Layout Inflater - Fatal编程技术网

Android数据绑定DatabindingUtil vs绑定类

Android数据绑定DatabindingUtil vs绑定类,android,performance,android-databinding,android-jetpack,layout-inflater,Android,Performance,Android Databinding,Android Jetpack,Layout Inflater,我想知道以下两者之间的区别是什么: binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false); vs 是否存在性能差异 每种方法的首选用例是什么 任何其他信息将不胜感激 谢谢 实际上,这两种方法都是一样的,不会影响性能。 我注意到的唯一一个小区别是,如果您确定要充气的布局,那么您可以使用 int layoutId = R.layout.drawer_item_primary;

我想知道以下两者之间的区别是什么:

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

是否存在性能差异
每种方法的首选用例是什么

任何其他信息将不胜感激


谢谢

实际上,这两种方法都是一样的,不会影响性能。 我注意到的唯一一个小区别是,如果您确定要充气的布局,那么您可以使用

int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
binding=draweritemprimary绑定。充气(充气器,父项,false)

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

int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
So
draweritemprimary绑定。充气(充气机,父级,假)
将始终返回我们的
DrawerItemPrimaryBinding
类。 如果我们必须使用
DataBindingUtil.inflate(充气器、layoutId、父项、false)然后我们可以根据需要进行转换。


谢谢。

按照中的建议使用
绑定类的充气

DataBindingUtil中,您可以看到

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

一种选择是通过
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
}
如果未生成布局biniding类,请参见

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