Android开发中,传统findViewById方式存在诸多弊端,ViewBinding技术为视图绑定提供了更高效的解决方案。
public class MainActivity extends AppCompatActivity { private TextView tvTitle;
private Button btnSubmit;
private RecyclerView rvList; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tvTitle = findViewById(R.id.tv_title);
btnSubmit = findViewById(R.id.btn_submit);
rvList = findViewById(R.id.rv_list); tvTitle.setText("Hello");
btnSubmit.setOnClickListener(v -> {
// do something
});
}
}
findViewById存在三个主要缺陷:

class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) binding.tvTitle.text = "Hello"
binding.btnSubmit.setOnClickListener {
// do something
}
}
}
在build.gradle中添加配置:
android {
buildFeatures {
viewBinding = true
}
}
使用ViewBinding的优势:
ViewBinding自动将布局文件名转换为驼峰命名的绑定类,如activity_main.xml生成ActivityMainBinding。布局变更后绑定类会自动更新,无需手动维护。
在多模块项目中,每个模块都需要单独启用viewBinding功能。
本文介绍了从findViewById到ViewBinding的技术升级,显著提升了Android开发的效率和安全性。