gpt4 book ai didi

android - 将 Id 设置为动态创建的 edittext

转载 作者:行者123 更新时间:2023-11-29 00:53:10 25 4
gpt4 key购买 nike

我在单击按钮时动态创建 Edittext,并将此 edittext 保存到 Edittext 类型的 ArrayList,然后在 String 类型的 ArrayList 中获取所有 edittext 的值。在创建新的 Edittext 时,我还创建了一个带有交叉图像的 BUTTON,当用户单击它时,它会删除该 edittext。然后我将这些编辑文本传递给 CheckBox 选项问题,这也是我动态创建的。问题是当我创建多个 edittext 并随机删除某人并单击 ok arraylist 删除它的最后一个索引时。我还将 ids 设置为 Edittext 但无法理解如何获取我要删除其值的相同 Edittext 的 Id 然后也将他从 ArrayList 中移除。

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

EditText checkBoxMoreEdt = new EditText(this);
checkBoxMoreEdt.setId(i);
moreOptList.add(i, checkBoxMoreEdt);

这里我要删除 Button clickListener 上的 View ,但不是从 arrayList 中删除确切的值,它也只是从列表中删除 View 和数组的最后一个索引。例如,如果我输入了 4 个选项AbCd然后删除选项 2,即 b,然后单击确定,它将显示给我AbC它所做的是现在从 arrayList 中删除最后一个保存值我应该如何获取我想要删除的确切编辑文本的 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 中。当您按索引删除元素时,所有元素都会移动,因此索引与您的 View 不匹配:

list.add(0, 0) //[0]
list.add(1, 1) //[0, 1]
list.remove(0) //[1]
list.remove(1) //throws IndexOutOfBoundsException

一种选择是用 HashMap 替换 ArrayList:

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

另一个有用的东西是使用 ViewsetTag/getTag 方法,你可以在那里存储你的索引,所以你可能不需要有外部索引存储:

view.setTag(index)
index = view.getTag()

关于android - 将 Id 设置为动态创建的 edittext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57574114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com