我有一个可编辑的元素列表:我可以在列表中添加/删除新元素。此外,我可以复制每个元素-重复的元素将附加到列表的末尾。每个元素都显示有一个对应的EditText,用户可以在其中输入给定元素的数量。问题:复制元素E1后,编辑E1的数量也会更改E2的数量。
每个ListItem看起来像这样: TextView(ElementTitle)/ EditText(ElementQuantity) 在许多元素的列表上,所有内容都可以正常使用-直到我使用“重复”功能。 我认为问题与Recyclerview重用EditTextListeners有关。我在此答案中描述了在onCreateViewHolder中分配这些内容:https://stackoverflow.com/a/31860393/6551120。
我尝试在我可以想象任何值的地方添加notifydatasetchanged()。在plicateddSelected()中,我尝试注销并清除适配器和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();
在MyAdapter中:
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的数量-我希望在第一种情况下会发生这种情况。
欢迎任何提示或想法,非常感谢!
答案 0 :(得分:0)