return 视图绑定中的 findViewById()
return findViewById() in viewbinding
我正在尝试优化旧代码。我正在尝试用视图绑定替换 findviewbyid。
但是如何 return viewbinding id 而不是 findviewbyid?
private TextView getTextView(int id){
return (TextView) findViewById(id);
}
这是旧代码。但我想应用视图绑定。我希望它像这样工作。因为我不知道该怎么做。
private TextView getTextView(int id){
return sampleViewBinding(id);
}
我怎样才能做到这一点?
View Binding 的全部意义在于避免 findViewById()
调用。它会自动为您完成。您正在尝试做的是像 findViewById()
一样处理视图绑定。每当您需要访问任何视图时,您所要做的就是调用生成的绑定 class 并在驼峰式大小写中使用您的 id。例如,main_layout.xml
将有一个由名称 MainLayoutBinding
生成的 class,因此您将通过调用 MainLayoutBinding
的实例和您要访问的 ID。
如果您的布局文件名为 fragment_dashboard.xml
并且在一个带有 Id userNameTvId
的文本视图中,那么您通常不使用数据绑定来执行此操作:
val view = inflater.inflate(R.layout.fragment_dashboard, container, false)
val textview = view.findViewById(R.id.userNameTvId)
但对于 viewBinding
,它是通过链接完成的。通过绑定对象可以接受此文本视图。上面将使用 viewBinding
:
重写
val binding = FragmentDashboardBinding.inflate(inflater)
binding.userNameTvId
// to pass a value you can just do
binding.userNameTvId = "SomeOne"
val view = binding.root
我正在尝试优化旧代码。我正在尝试用视图绑定替换 findviewbyid。 但是如何 return viewbinding id 而不是 findviewbyid?
private TextView getTextView(int id){
return (TextView) findViewById(id);
}
这是旧代码。但我想应用视图绑定。我希望它像这样工作。因为我不知道该怎么做。
private TextView getTextView(int id){
return sampleViewBinding(id);
}
我怎样才能做到这一点?
View Binding 的全部意义在于避免 findViewById()
调用。它会自动为您完成。您正在尝试做的是像 findViewById()
一样处理视图绑定。每当您需要访问任何视图时,您所要做的就是调用生成的绑定 class 并在驼峰式大小写中使用您的 id。例如,main_layout.xml
将有一个由名称 MainLayoutBinding
生成的 class,因此您将通过调用 MainLayoutBinding
的实例和您要访问的 ID。
如果您的布局文件名为 fragment_dashboard.xml
并且在一个带有 Id userNameTvId
的文本视图中,那么您通常不使用数据绑定来执行此操作:
val view = inflater.inflate(R.layout.fragment_dashboard, container, false)
val textview = view.findViewById(R.id.userNameTvId)
但对于 viewBinding
,它是通过链接完成的。通过绑定对象可以接受此文本视图。上面将使用 viewBinding
:
val binding = FragmentDashboardBinding.inflate(inflater)
binding.userNameTvId
// to pass a value you can just do
binding.userNameTvId = "SomeOne"
val view = binding.root