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

求助:java.lang.NullPointerException报错,itemView.findViewById不可为null

解决java.lang.NullPointerException: itemView.findViewById(R.id.img_movie) must not be null

常见原因及排查方向:

  • 布局ID不匹配:检查RecyclerView子项布局文件里,ImageView的ID是不是严格等于img_movie,注意拼写、大小写别出错,比如别写成img_movies或者Img_movie。
  • ViewHolder初始化传入的View错误:确认Adapter的onCreateViewHolder方法里,加载的是包含img_movie的子项布局,并且正确传入ViewHolder。比如:
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MainViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_movie, parent, false)
        return MainViewHolder(view)
    }
    
    这里要保证R.layout.item_movie是正确的子项布局文件。
  • 布局引用问题:如果子项布局用了<include>标签,得确认被包含的布局里确实有img_movie这个ID,避免因重复ID或引用错误导致找不到控件。
  • Kotlin合成属性冲突:如果项目启用了Kotlin Android Extensions,可能出现同名ID冲突,建议改用ViewBinding/DataBinding,或者暂时禁用该插件排查问题。
  • 控件不存在于布局:仔细检查子项布局文件,确保img_movie这个ImageView确实存在,没被误删或者注释掉。

快速排查小技巧:

在bind方法里加个简单的调试逻辑,确认控件是否存在:

fun bind(movies: Movie){
    val image: ImageView? = itemView.findViewById(R.id.img_movie)
    if(image == null){
        // 这里可以打日志或者用Toast提示
        Log.e("ViewHolderError", "找不到img_movie控件")
        return
    }
    image.setImageResource(movies.urlCoverImg)
}

也可以用Android Studio的Layout Inspector工具,查看运行时RecyclerView子项的布局结构,直观确认控件是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:35:24