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

Room求和查询后TextView显示CoroutineLiveData对象哈希值问题求助

问题原因

你看到的androidx.lifecycle.CoroutineLiveData@76f6edd是LiveData对象本身的内存地址,不是查询逻辑错误:

  • 你在ViewModel中已经把Room返回的Flow转换成了LiveData类型的totalSum,LiveData是数据持有容器,不能直接取toString()作为展示内容,需要通过观察者模式拿到容器内实际存储的求和数值。
修复方案

删除Fragment中totalSumTextView.apply块内的原有赋值逻辑,和你观察收据列表的逻辑一致,对求和LiveData添加观察者,数据变化时自动更新TextView:

// 放在onViewCreated方法内,和viewModel.receipts.observe逻辑同级
viewModel.totalSum.observe(viewLifecycleOwner) { sum ->
    // sum即为查询得到的求和值,空值(表内无数据时)默认显示0,保留2位小数适配金额展示
    binding.totalSumTextView.text = String.format("总计:%.2f元", sum ?: 0f)
}
补充说明
  1. 原有Dao层的查询语句、ViewModel层的Flow转LiveData逻辑都无需修改,Room会自动监听表数据变化,新增、删除收据时求和结果会自动更新到TextView
  2. 如果需要自定义空数据时的展示文案,可以调整空值处理逻辑,比如sum ?: "暂无数据",注意对应类型匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:54:03