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
相关产品推荐
相关产品推荐

