返回

视图绑定替代findViewById:革新Android开发体验

Android

从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。开启视图绑定无须引入额外依赖,从 Android Studio 3.6 开始,只需在项目的 build.gradle 文件中添加以下内容即可:

android {
    buildFeatures {
        viewBinding true
    }
}

启用视图绑定后,Android Studio 将自动在每个布局文件(XML 文件)对应的类文件中生成一个 Binding 类。这个 Binding 类包含了对布局文件中所有视图的引用,从而使您无需再使用 findViewById() 方法来查找视图。

例如,如果您的布局文件名为 activity_main.xml,那么对应的 Binding 类将名为 ActivityMainBinding。这个 Binding 类包含了对布局文件中所有视图的引用,例如:

public class ActivityMainBinding {

    private final ActivityMainBindingBinding mBinding;

    public ActivityMainBinding(Activity activity) {
        mBinding = DataBindingUtil.setContentView(activity, R.layout.activity_main);
    }

    public Button mButton;
    public TextView mTextView;

}

为了使用视图绑定,您需要在您的活动或片段中创建一个 Binding 对象。您可以通过调用 DataBindingUtil.setContentView() 方法来完成此操作,如下所示:

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding mBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

        mBinding.mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mBinding.mTextView.setText("Hello, World!");
            }
        });
    }

}

使用视图绑定,您将不再需要使用 findViewById() 方法来查找视图。您只需使用 Binding 对象来访问布局文件中所有视图,如下所示:

mBinding.mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mBinding.mTextView.setText("Hello, World!");
    }
});

视图绑定有许多优点,包括:

  • 代码更简洁:视图绑定可以使您的代码更简洁,因为您无需再使用 findViewById() 方法来查找视图。
  • 更少的错误:视图绑定可以帮助您避免错误,因为您无需再手动维护对视图的引用。
  • 更高的开发效率:视图绑定可以提高您的开发效率,因为您无需再花费时间来查找视图。
  • 更好的性能:视图绑定可以提高您的应用程序的性能,因为 findViewById() 方法是一个相对较慢的操作。

如果您正在开发 Android 应用程序,那么您应该考虑使用视图绑定。视图绑定可以使您的代码更简洁、更易于维护,并且可以提高您的开发效率和应用程序的性能。