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
相关产品推荐
相关产品推荐

