为了账号安全,请及时绑定邮箱和手机立即绑定

使用 EditText 编辑 RecyclerView 中的重复项目

使用 EditText 编辑 RecyclerView 中的重复项目

饮歌长啸 2023-05-10 16:58:05
我有一个可编辑的元素列表:我可以向列表中添加/删除新元素。此外,我可以复制每个元素——复制的元素附加到列表的末尾。每个元素都显示有相应的 EditText,用户可以在其中输入给定元素的数量。问题:复制元素 E1 后,编辑 E1 的数量也会更改 E2 的数量。每个 ListItem 看起来像这样: TextView(ElementTitle) / EditText(ElementQuantity) 在许多元素的列表上一切都完美无缺 - 直到我使用我的“复制”功能。我认为问题与重用 EditTextListeners 的 Recyclerview 有关。我按照此答案中的描述在 onCreateViewHolder 中分配它们:https://stackoverflow.com/a/31860393/6551120。我尝试在我能想到的任何值的地方添加 notifydatasetchanged() 。在 duplicatedSelected() 中,我尝试注销和清除适配器和 LayoutManager 并创建一个新的适配器 - 但没有任何结果。这是复制我的元素的方法(在 ListActivity 中):private void duplicateSelected(){   List selectedItemPositions = mAdapter.getSelectedItems();   for (int i = 0; i < selectedItemPositions.size(); i++) {      int j =(int) selectedItemPositions.get(i);      modulElements.add(modulElements.get(j));   }   mAdapter.notifyDataSetChanged();在我的适配器中:private class ModulElementEditTextListener implements TextWatcher {        private int position;        public void updatePosition(int position) {            this.position = position;        }        //Other Override Methods cut out for simplicity            @Override        public void afterTextChanged(Editable editable) {            updatePosition(position);            int timesMultiplied;            if(editable.toString().equals("")){                timesMultiplied=Integer.parseInt("0");            }else{                timesMultiplied = Integer.parseInt(editable.toString());            }                        modulElements.get(position)                .setMultiplier(newModulElementMultiplier());            modulElements.get(position)                .getMultiplier().setTimesMultiplied(timesMultiplied);                    }    } 输入 E1 的数量时的预期结果:E1 的数量发生变化输入 E1 的数量时的实际结果:E1 和 E2 的数量(以及 E3、E4、E5...当我复制多次时)发生变化。如果我将元素列表保存到数据库并重新打开它,我可以完美地编辑 E1 的数量并且它不会改变 E2 的数量 - 正如我期望的那样在第一种情况下发生。欢迎任何提示或想法,非常感谢!
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

您必须为您的数据模型实现可克隆接口并修改这一行

modulElements.add(modulElements.get(j).clone());

现在列表中有不同的对象


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信