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

删除Room数据库最后一条数据后RecyclerView布局未即时更新解决方案咨询

问题根因

你在ViewModel的readAllData数据观察回调中,仅当返回的收藏列表不为空时才会调用adapter.setData()更新适配器数据源。当你删除最后一条收藏项后,数据库返回的列表为空,此时逻辑仅触发了空状态控件的显示,没有同步更新适配器的数据源,适配器内部仍保留着最后一条数据的缓存,所以RecyclerView不会主动移除该条目。

修复方案

修改FavoritesFragment中LiveData的观察逻辑,无论返回的收藏列表是否为空,都先更新适配器的数据,再控制空状态的显隐即可:

mfavoriteViewModel.readAllData.observe(viewLifecycleOwner, { favorite ->
    // 先同步更新适配器数据,空列表也会触发适配器刷新清除所有条目
    adapter.setData(favorite)
    if (favorite.isEmpty()) {
        binding.emptyState.text = getString(R.string.emptyState)
        binding.emptyState.visibility = View.VISIBLE
    } else {
        binding.emptyState.visibility = View.GONE
    }
})

可选优化(提升列表更新性能)

你当前的setData方法调用了全量刷新notifyDataSetChanged(),如果要更丝滑的更新效果,可以改用DiffUtil做增量更新,不需要修改现有逻辑结构,仅替换setData的实现即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:01