Android 将Id设置为动态创建的edittext

Android 将Id设置为动态创建的edittext,android,android-edittext,dynamically-generated,Android,Android Edittext,Dynamically Generated,我通过单击按钮动态创建Edittext,并将此Edittext保存到Edittext类型的ArrayList,然后获取String类型的ArrayList中所有Edittext的值。在创建新的Edittext时,Iam还创建了一个带有十字图像的按钮,当用户单击该按钮时,该按钮将删除该Edittext。然后我将这些编辑文本传递给复选框问题选项,这也是我动态创建的。 问题是当我创建多个edittext并随机删除某人,然后单击“确定arraylist”删除其最后一个索引时。我也将Id设置为editte

我通过单击按钮动态创建Edittext,并将此Edittext保存到Edittext类型的ArrayList,然后获取String类型的ArrayList中所有Edittext的值。在创建新的Edittext时,Iam还创建了一个带有十字图像的按钮,当用户单击该按钮时,该按钮将删除该Edittext。然后我将这些编辑文本传递给复选框问题选项,这也是我动态创建的。 问题是当我创建多个edittext并随机删除某人,然后单击“确定arraylist”删除其最后一个索引时。我也将Id设置为edittext,但无法理解如何获取要删除其值的同一edittext的Id,然后将其从arraylist中删除

在这里,我正在创建Edittext,并将它们添加到带有ID的“moreOptList”中

EditText checkBoxMoreEdt = new EditText(this);
 checkBoxMoreEdt.setId(i);
 moreOptList.add(i, checkBoxMoreEdt);
在这里,我删除按钮clickListener上的视图,但不是从arrayList中删除确切的值,而是从列表中删除视图和数组的最后一个索引。例如,如果我有输入4个选项 A. B C D 然后删除了选项2,即b,然后单击“确定”,它将显示给我 A. B C 它的作用是从arrayList中删除最后一个保存值。现在,我应该如何获取要删除的确切edittext的Id,并将其从arrayList中删除

final Button button = new Button(this);  
  button.setId(b);
  button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chkbParentLayout.removeView(ll);
                moreOptList.remove(i);
            }
        });

问题很可能出在
ArrayList
中。按索引删除元素时,所有元素都会移位,因此索引与视图不匹配:

list.add(0, 0) //[0]
list.add(1, 1) //[0, 1]
list.remove(0) //[1]
list.remove(1) //throws IndexOutOfBoundsException
一个选项是将
ArrayList
替换为
HashMap

map = HashMap<Integer, View>()
map.put(i, view)
...
group.remove(map.remove(i))
view.setTag(index)
index = view.getTag()