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

Android ListView移除项后合计值无法正确更新的问题求助

解决ListView条目移除时总计金额不更新的问题

你的问题根源很明确:修改选中条目集合后,没有触发总计金额的重新计算。当前代码在onChanged()方法中,无论是移除还是添加条目,操作完成后直接return,完全没调用totalOrderValue()方法更新总计。添加时显示正确可能是其他逻辑巧合触发了计算,但移除时没有,所以导致金额没扣除。

直接修改DataSetObserver的实现,在修改selectedList后调用总计计算方法即可:

adapter.registerDataSetObserver(new DataSetObserver() {
    @Override
    public void onChanged() {
        super.onChanged();

        int index = selectedList.indexOf(ordList.get(adapter.recentItemSelected));
        if (index >= 0) {
            selectedList.remove(index);
            rvOrderBrdAdapter.notifyItemRemoved(index);
        } else {
            selectedList.add(ordList.get(adapter.recentItemSelected));
            rvOrderBrdAdapter.notifyItemInserted(selectedList.size() - 1);
        }
        // 关键:修改集合后立即重新计算并更新总计
        totalOrderValue(selectedList);
    }
});

public void totalOrderValue(ArrayList<OrderBrdDataModel> filteredlist) {
    double total = 0;
    for (int i = 0; i < filteredlist.size(); i++) {
        total = total + filteredlist.get(i).getBrdIndividualTotal();
    }
    totalValue.setText(String.format("%.3f", total));
}

额外检查点

  • 确认adapter.recentItemSelected确实指向当前被操作的条目索引,避免误操作其他条目
  • 确保rvOrderBrdAdapter的数据源就是selectedList,避免出现数据不一致的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:31:11