You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio无法识别Layout类变量tvTodoTitle问题求助

解决RecyclerView Adapter中tvTodoTitle找不到的问题

你的问题核心是没有启用视图绑定(View Binding),导致IDE无法识别布局文件里的tvTodoTitle控件。教程仓库的代码应该已经配置了视图绑定,而你的项目没开,所以出现这个错误。

下面是两种解决方法:

方法一:启用视图绑定(推荐,符合现代Android开发规范)

  1. 打开app模块的build.gradle(注意是Module级别的,不是Project根目录的那个)
  2. 在android代码块中添加视图绑定配置:
    android {
        // 其他已有配置...
        buildFeatures {
            viewBinding true
        }
    }
    
  3. 点击Android Studio右上角的「Sync Now」同步Gradle
  4. 修改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
      }
      

方法二:手动用findViewById(临时快速解决)

如果不想启用视图绑定,可以直接在代码中手动获取控件:

  1. 先导入TextView类:
    import android.widget.TextView
    
  2. 修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:26:24