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

Kotlin Fragment中Recyclerview实现默认总价为首款商品×1的问题排查

问题原因

你代码的核心问题是select_price变量初始化值为0,虽然RecyclerView Adapter默认选中了第一个商品,但Fragment侧没有主动读取首个商品的价格赋值给select_price,仅在商品点击事件触发时才会更新select_price的值。页面首次加载调用refreshOutput()计算总价时,用的还是初始的0值,所以结果不符合预期。

修复方案

在HomeFragment的onViewCreated方法中,调用refreshOutput()之前,新增一行代码初始化默认选中的首个商品价格即可:

// 初始化默认选中第一个商品的价格
select_price = productList.first().price.toInt()

修改后的onViewCreated末尾部分代码参考:

//handle menu click to show menu
selectedTv.setOnClickListener {
    popupMenu.show()
}

// 新增代码行
select_price = productList.first().price.toInt()
//calculate the total price
refreshOutput()

可选优化建议

你当前的ProductAdapter中存在重复设置点击事件的冗余代码:onBindViewHolder和ViewHolder的init块都给itemView设置了点击事件,你可以删除onBindViewHolder里的holder.itemView.setOnClickListener逻辑,只保留ViewHolder里的点击触发监听即可,避免重复执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:48:00