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

RecyclerView Adapter中无法获取XML布局视图求助

解决RecyclerView Adapter中无法访问XML视图的问题(非ViewBinding方式)

你遇到的Unresolved reference: ivArticleImage错误,原因是未启用ViewBinding时,Kotlin无法自动生成XML视图的直接引用,必须手动通过findViewById获取视图实例。以下是两种无需ViewBinding的解决方案:

方法一:在ViewHolder中缓存视图(推荐)

将视图引用初始化在ViewHolder内部,避免每次绑定重复查找视图,提升性能:

修改Adapter中的ArticleViewHolder类:

inner class ArticleViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    // 提前初始化视图引用
    val ivArticleImage: ImageView = itemView.findViewById(R.id.ivArticleImage)
}

然后修改onBindViewHolder方法,通过holder直接访问视图:

override fun onBindViewHolder(holder: ArticleViewHolder, position: Int) {
    val article = differ.currentList[position]
    Glide.with(holder.itemView.context)
        .load(article.urlToImage)
        .into(holder.ivArticleImage)
}

方法二:在绑定阶段直接查找视图(不推荐)

如果不想修改ViewHolder,可以在每次绑定视图时直接调用findViewById:

override fun onBindViewHolder(holder: ArticleViewHolder, position: Int) {
    val article = differ.currentList[position]
    // 手动获取ImageView实例
    val ivArticleImage = holder.itemView.findViewById<ImageView>(R.id.ivArticleImage)
    Glide.with(holder.itemView.context)
        .load(article.urlToImage)
        .into(ivArticleImage)
}

关键说明

  • 原来的代码中,在holder.itemView.apply块里直接使用ivArticleImage是无效的,因为没有ViewBinding的支持,Kotlin无法识别这个未定义的变量。
  • 确保XML布局中的android:id="@+id/ivArticleImage"拼写与代码中的引用完全一致,避免因拼写错误导致的查找失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:57:25