在视图绑定中返回findViewById()

时间:2020-05-01 13:37:12

标签: java android android-viewbinding

我正在尝试优化旧代码。我正在尝试用viewbinding替换findviewbyid。 但是,如何返回viewbinding id而不是findviewbyid?

private TextView getTextView(int id){
        return (TextView) findViewById(id);
}

这是旧代码。但是我想应用视图绑定。我希望它能像这样工作。我不知道该怎么做。

private TextView getTextView(int id){
        return sampleViewBinding(id);
}

我该如何实现?

2 个答案:

答案 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