Android 数据绑定 DatabindingUtil 与绑定 class
Android Databinding DatabindingUtil vs binding class
我想知道以下内容之间有什么区别:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
对
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
是否存在任何性能差异?
每个的首选用例是什么?
任何其他信息将不胜感激!
谢谢!
其实这两个东西是一样的,不会影响性能。
我注意到的唯一一个小区别是,如果您确定要膨胀哪种布局,则可以使用
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
但是如果你想要动态绑定 class 那么你可以使用
int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
所以 DrawerItemPrimaryBinding.inflate(inflater, parent, false);
将永远 return 我们的 DrawerItemPrimaryBinding
class。
如果我们必须使用 DataBindingUtil.inflate(inflater, layoutId, parent, false);
那么我们可以根据要求进行转换。
谢谢。
中的建议使用 Binding class's inflate
在DataBindingUtilclassdocumentation中可以看到。
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
膨胀,但只有当您没有生成绑定时 class.
您已生成 binding class
,请使用 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
}
如果你的布局biniding class没有生成@See .
我想知道以下内容之间有什么区别:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
对
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
是否存在任何性能差异?
每个的首选用例是什么?
任何其他信息将不胜感激!
谢谢!
其实这两个东西是一样的,不会影响性能。 我注意到的唯一一个小区别是,如果您确定要膨胀哪种布局,则可以使用
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
但是如果你想要动态绑定 class 那么你可以使用
int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
所以 DrawerItemPrimaryBinding.inflate(inflater, parent, false);
将永远 return 我们的 DrawerItemPrimaryBinding
class。
如果我们必须使用 DataBindingUtil.inflate(inflater, layoutId, parent, false);
那么我们可以根据要求进行转换。
谢谢。
Binding class's inflate
在DataBindingUtilclassdocumentation中可以看到。
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
膨胀,但只有当您没有生成绑定时 class.
您已生成 binding class
,请使用 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
}
如果你的布局biniding class没有生成@See