我有一个可编辑的元素列表:我可以向列表中添加/删除新元素。此外,我可以复制每个元素——复制的元素附加到列表的末尾。每个元素都显示有相应的 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());
现在列表中有不同的对象
添加回答
举报
0/150
提交
取消