启用视图绑定后,使用:
android {
...
buildFeatures {
viewBinding = true
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用ViewBinding,问题是我们需要binding.在访问每个视图之前使用前缀。有没有一种方法可以省略这个前缀,并直接访问类中的视图?
所以而不是:
binding.textview1.text = viewModel.name
binding.button1.setOnClickListener { viewModel.userClicked() }
Run Code Online (Sandbox Code Playgroud)
直接使用:
textview1.text = viewModel.name
button1.setOnClickListener { viewModel.userClicked() }
Run Code Online (Sandbox Code Playgroud)
显然我们可以使用with(binding)和使用每个方法,但是有没有办法在全局范围内将其应用于整个类?
fun method = with(binding){
// now we can access the viewbinding
textview1.text = viewModel.name
button1.setOnClickListener { viewModel.userClicked() }
}
Run Code Online (Sandbox Code Playgroud)
是否有任何绑定设置,我们可以指定编译器从布局生成接口:
所以它会自动生成:
public interface Fragment1BindingInterface {
@NonNull
TextView getTextView1();
}
public final class Fragment1Binding implements ViewBinding, Fragment1BindingInterface {
@NonNull
private final RelativeLayout rootView;
@Override
@NonNull
private final TextView …Run Code Online (Sandbox Code Playgroud)