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

RecyclerView中onResume调用notifyItemChanged无效问题求助

问题分析与解决

嘿,我一眼就发现问题所在啦!

你在初始化RecyclerView Adapter的时候犯了一个小错误——你创建了两个不同的Adapter实例,导致后续调用notifyItemChanged()的对象和RecyclerView实际绑定的Adapter根本不是同一个,自然看不到更新效果。

具体来看你的onActivityCreated代码:

private lateinit var recyclerView: RecyclerView
private lateinit var viewAdapter: RecyclerView.Adapter<*>
private lateinit var viewManager: RecyclerView.LayoutManager
viewManager = LinearLayoutManager(this)
viewAdapter = ListAdapter(mylist) // 第一个Adapter实例
recyclerView = findViewById<RecyclerView>(R.id.recyclerview).apply {
    setHasFixedSize(true)
    layoutManager = viewManager
    adapter=ListAdapter(devicelist).apply { } // 这里又新建了第二个Adapter实例
}

你先给viewAdapter赋值了一个ListAdapter对象,但紧接着给RecyclerView设置adapter时,又重新new了一个全新的ListAdapter。这就导致viewAdapter变量和RecyclerView实际使用的Adapter完全是两个独立的对象,后续在onResume里调用viewAdapter.notifyItemChanged(),根本不会对RecyclerView产生任何影响。

修正后的代码

把RecyclerView的adapter赋值改成直接使用你初始化好的viewAdapter即可:

修改后的onActivityCreated代码

private lateinit var recyclerView: RecyclerView
private lateinit var viewAdapter: RecyclerView.Adapter<*>
private lateinit var viewManager: RecyclerView.LayoutManager

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewManager = LinearLayoutManager(this)
    // 注意统一数据源,你原来的mylist和devicelist要保持一致哦
    viewAdapter = ListAdapter(devicelist)
    recyclerView = findViewById<RecyclerView>(R.id.recyclerview).apply {
        setHasFixedSize(true)
        layoutManager = viewManager
        adapter = viewAdapter // 直接用已初始化的viewAdapter,不再新建
    }
}

优化后的onResume代码

override fun onResume() {
    super.onResume()
    val positionData = list[pos.toInt()]
    // 用安全调用替代!!,避免空指针崩溃
    positionData.pos?.let { validPosition ->
        viewAdapter.notifyItemChanged(validPosition)
    }
}

额外注意事项

  • 确保设置更改后,你的数据源devicelist中对应位置的数据已经正确更新,notifyItemChanged()只是通知RecyclerView重新绘制该位置,真正显示的内容还是来自数据源。
  • 尽量避免使用!!强制解包,用?.let这类安全调用方式能让代码更健壮,减少崩溃风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:16