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