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

Kotlin中为RecyclerView Adapter添加View Binding时ItemBinding标红求助

解决RecyclerView中View Binding的ItemBinding标红问题

1. 先确认View Binding已在项目中启用

模块级的build.gradle(或build.gradle.kts)必须开启View Binding,否则系统不会自动生成布局对应的Binding类:

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

配置完成后同步项目,item.xml布局才会生成对应的ItemBinding类。

2. 检查布局文件的正确性

  • 确保res/layout目录下存在item.xml文件,文件名拼写完全匹配(大小写敏感,比如Item.xml和item.xml生成的Binding类名称不同)。
  • 排查布局文件的语法错误,比如未闭合的标签、无效属性等,这类错误会导致Binding类无法正常生成。

3. 修正Adapter中的代码(改用ViewBinding原生方法)

你当前使用的DataBindingUtil是Data Binding的工具类,View Binding有更直接的调用方式,同时要确保导入正确的ItemBinding类:

import com.yourpackage.name.ItemBinding // 替换成你的项目包名
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.ViewGroup

class RecyclerviewAdapter: RecyclerView.Adapter<RecyclerviewAdapter.ViewHolder>() {

    class ViewHolder(private val binding: ItemBinding) : RecyclerView.ViewHolder(binding.root) {
        // 可在此添加数据绑定方法,示例:
        fun bind(data: YourDataType) {
            // binding.tvContent.text = data.content
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val binding = ItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return ViewHolder(binding)
    }

    override fun getItemCount(): Int {
        // 返回你的数据列表长度,比如 return dataList.size
        return 0
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        // 获取对应位置数据并绑定,示例:
        // val data = dataList[position]
        // holder.bind(data)
    }
}

4. 同步并重建项目

  • 点击Android Studio菜单栏的File -> Sync Project with Gradle Files同步项目。
  • 若标红仍未消失,执行Build -> Clean Project后再Build -> Rebuild Project,强制重新生成Binding类。

内容的提问来源于stack exchange,提问作者birisininkodarsivi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:12:28