0

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

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

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

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

我怎样才能做到这一点?

4

2 回答 2

0

View Binding 的全部目的是避免findViewById()调用。它会自动为您完成。您要做的是将 View Binding 视为findViewById(). 每当您需要访问任何视图时,您所要做的就是调用生成的绑定类,并使用您的 id 在骆驼案例中。例如main_layout.xml,将有一个由名称生成的类,MainLayoutBinding因此您将通过调用MainLayoutBinding您要访问的实例和 id 来访问布局内的所有视图。

于 2020-05-02T08:14:12.287 回答
0

如果您的布局文件名fragment_dashboard.xml在带有 Id 的 textview 中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
于 2020-06-01T04:37:20.887 回答