gpt4 book ai didi

java - ConcurrentModificationException 在 android 中为每个抛出

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:10:19 25 4
gpt4 key购买 nike

我在 forloop 中传递标签列表进行迭代,但它引发了 ConcurrentModificationException

 public void clearTag() {
List<Tag> tags = binding.search.tagView.getTags();
Log.d(TAG, "clearTags: " + tags);
for (Tag tag : tags) {
Log.d(TAG, "clearTag: " + tag + " " + tag.getLayoutColor());
if (tag.getLayoutColor() == R.color.red) {
tags.remove(tag);
} else if (tag.getLayoutColor() == R.color.blue) {
tags.remove(tag);
} else if (tag.getLayoutColor() == R.color.green) {
tags.remove(tag);
}
}
updateTagVisibility();
//resetFilter();
}

最佳答案

这是因为在遍历数组时不允许删除和添加操作。所以你需要将所有要删除的元素存储在不同的数组中,然后一次删除它们。这是一个例子:

public void clearTag() {
List<Tag> tags = binding.search.tagView.getTags();
List<Tag> tagsToRemove = new ArrayList<>();
Log.d(TAG, "clearTags: " + tags);
for (Tag tag : tags) {
Log.d(TAG, "clearTag: " + tag + " " + tag.getLayoutColor());
if (tag.getLayoutColor() == R.color.red) {
tagsToRemove.add(tag);
} else if (tag.getLayoutColor() == R.color.blue) {
tagsToRemove.add(tag);
} else if (tag.getLayoutColor() == R.color.green) {
tagsToRemove.add(tag);
}
}
tags.removeAll(tagsToRemove);
updateTagVisibility();
//resetFilter();
}

关于java - ConcurrentModificationException 在 android 中为每个抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462941/

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