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

切换Kotlin Synthetics为ViewBinder后如何在Activity修改RecyclerView子项视图

问题原因
  • Kotlin Synthetics是通过全局扩展属性给View对象自动注入控件引用,所以之前可以直接调用itemView.memeCommentsCount,但ViewBinding不会给原生View类添加任何扩展属性,memeCommentsCount是你自定义在ViewHolder类内部的属性,不属于itemView这个View对象的成员。
  • 你在Activity中将找到的ViewHolder强制转换成了通用父类RecyclerView.ViewHolder,父类本身没有定义memeCommentsCount属性,就算不走itemView也无法拿到对应的控件。
解决方法
  1. 强制类型转换时指定为你自定义的ViewHolder子类(注意替换成你自己Adapter内部定义的ViewHolder类名),直接访问ViewHolder内部的memeCommentsCount属性即可,不需要通过itemView访问:
// 替换YourAdapter为你自己的RecyclerView适配器类名
val viewHolder = binding.recyclerViewMemes.findViewHolderForAdapterPosition(i) as YourAdapter.ViewHolder
viewHolder.memeCommentsCount.text = "●"
  1. 建议增加空安全处理,避免对应位置没有ViewHolder时出现类型转换异常:
val viewHolder = binding.recyclerViewMemes.findViewHolderForAdapterPosition(i) as? YourAdapter.ViewHolder
viewHolder?.memeCommentsCount?.text = "●"

额外提示:如果是数据源变更导致的UI修改,优先修改数据源对应条目的字段,再调用notifyItemChanged(i)刷新对应位置,比直接修改ViewHolder的View更稳妥,可避免RecyclerView复用ViewHolder时出现显示错乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:45:03