Android Studio无法识别Layout类变量tvTodoTitle问题求助
解决RecyclerView Adapter中tvTodoTitle找不到的问题
你的问题核心是没有启用视图绑定(View Binding),导致IDE无法识别布局文件里的tvTodoTitle控件。教程仓库的代码应该已经配置了视图绑定,而你的项目没开,所以出现这个错误。
下面是两种解决方法:
方法一:启用视图绑定(推荐,符合现代Android开发规范)
- 打开app模块的
build.gradle(注意是Module级别的,不是Project根目录的那个) - 在
android代码块中添加视图绑定配置:android { // 其他已有配置... buildFeatures { viewBinding true } } - 点击Android Studio右上角的「Sync Now」同步Gradle
- 修改
TodoAdapter.kt的代码:- 更新ViewHolder类,使用自动生成的绑定类:
class TodoViewHolder(private val binding: ItemTodoBinding) : RecyclerView.ViewHolder(binding.root) - 修改
onCreateViewHolder方法,用绑定类加载布局:override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder { val binding = ItemTodoBinding.inflate(LayoutInflater.from(parent.context), parent, false) return TodoViewHolder(binding) } - 更新
onBindViewHolder,通过绑定类获取控件:override fun onBindViewHolder(holder: TodoViewHolder, position: Int) { val curTodo = todos[position] holder.binding.tvTodoTitle.text = curTodo.title }
- 更新ViewHolder类,使用自动生成的绑定类:
方法二:手动用findViewById(临时快速解决)
如果不想启用视图绑定,可以直接在代码中手动获取控件:
- 先导入TextView类:
import android.widget.TextView - 修改
onBindViewHolder方法:override fun onBindViewHolder(holder: TodoViewHolder, position: Int) { val curTodo = todos[position] holder.itemView.apply { val tvTodoTitle = findViewById<TextView>(R.id.tvTodoTitle) tvTodoTitle.text = curTodo.title } }
补充说明
Android Studio Hedgehog版本默认不会开启视图绑定,而很多新教程都会用这个特性来简化控件查找,所以你对比仓库代码时可能没注意到build.gradle里的配置差异。
内容的提问来源于stack exchange,提问作者Reuben Jacob Mathew
相关产品推荐
相关产品推荐

