猿问

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

我有一个可编辑的元素列表:我可以向列表中添加/删除新元素。此外,我可以复制每个元素——复制的元素附加到列表的末尾。每个元素都显示有相应的 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 的数量 - 正如我期望的那样在第一种情况下发生。


欢迎任何提示或想法,非常感谢!


饮歌长啸
浏览 160回答 1
1回答

浮云间

您必须为您的数据模型实现可克隆接口并修改这一行modulElements.add(modulElements.get(j).clone());现在列表中有不同的对象
随时随地看视频慕课网APP

相关分类

Java
我要回答