如何通过单击按钮删除存储在 ArrayList<EditText> 中的特定视图?

How can I remove a certain view stored in an ArrayList<EditText> on a click of a button?

所以我正在创建一个 activity,用户可以在其中创建投票。

我有:

1- 动态添加的 EditTexts

2- 包含所有 EditText 视图的 List<EditText> allEds = new ArrayList<>();

3- 还动态附加 ImageButtons '❌' 作为 删除工具 附加到每个 EditText.

我只想:

检测用户删除了哪个 EditText 视图,以便从 allEds 列表[=]同步删除它44=].

换句话说,当用户单击附加到 EditText 删除按钮 时(除了删除我成功完成的两个视图之外) 我想知道在哪个 删除按钮 上单击了 EditText 并从ArrayList.

请帮帮我。

您可以通过 view.setTag() 方法使用 EditText 标签属性:这样每对 Button & EdiText 应该有相同的标签。

然后是 link 列表中的几个选项:

第一个:

将标签值设置为等于列表中 EditText 索引的整数值:并直接在单击按钮时将其删除:

button.setOnClickListener(v -> {
    int buttonTag = (int) v.getTag();
    allEds.remove(buttonTag);
});

第二个:

在第一个选项中处理索引可能很麻烦,因此您可以通过遍历列表来查找预期的标签:

button.setOnClickListener(v -> {
    String buttonTag = (String) v.getTag();

    for(EditText editText: allEds) {
        String edtitextTag = (String) editText.getTag();
        if (buttonTag.equals(edtitextTag)) {
            // remove EditText
            allEds.remove(editText);
            break;
        }
    }
});