最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
从findViewById到ViewBinding的演进
时间:2026-06-02 13:40:01 编辑:袖梨 来源:一聚教程网
Android开发中,传统findViewById方式存在诸多弊端,ViewBinding技术为视图绑定提供了更高效的解决方案。
findViewById → ViewBinding
老写法(Java)
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存在三个主要缺陷:

- 每个View都需要单独声明和绑定,复杂页面会产生大量样板代码
- ID拼写错误不会在编译时发现,导致运行时崩溃
- 类型转换错误仅在运行时抛出ClassCastException
新写法(Kotlin + ViewBinding)
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的优势:
- 自动生成视图绑定代码,无需手动编写
- 编译时检查ID正确性,避免运行时错误
- 类型安全,无需强制类型转换
一句话注意
ViewBinding自动将布局文件名转换为驼峰命名的绑定类,如activity_main.xml生成ActivityMainBinding。布局变更后绑定类会自动更新,无需手动维护。
在多模块项目中,每个模块都需要单独启用viewBinding功能。
本文介绍了从findViewById到ViewBinding的技术升级,显著提升了Android开发的效率和安全性。
相关文章
- linux下关于正则表达式grep的一点总结 09-28
- js中的正则表达式入门(大量实例代码) 09-28
- 正则表达式替换table表格中的样式与空标记(保留rowspan与colspan) 09-28
- js 正则学习小记之匹配字符串字面量优化篇 09-28
- js正则学习小记之匹配字符串字面量 09-28
- 浅谈js正则之test方法bug篇 09-28