使用Tag删除所有ImageView

时间:2017-08-13 21:30:46

标签: android

如何迭代视图的子项并使用标​​记StartsWith特定字符串删除所有ImageView? 所有例子我都可以找到这个迭代器;

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

进行测试,然后删除该对象。 问题是在整个过程中'pos'和getChildCount都发生了变化。如果我想删除第一个项目然后第二个项目(在第一个删除后实际上是第一个项目)它将无法工作,因为pos现在是1(即第二个项目)。

感谢

1 个答案:

答案 0 :(得分:0)

有几个选择。

for (int pos = 0; pos < mat.getChildCount();) {
    if (remove) {
        mat.removeViewAt(pos);
        continue;
    }
    // only increment if the element wasn't removed
    pos++;
}
for (int pos = 0; pos < mat.getChildCount(); pos++) {
    if (remove) {
        mat.removeViewAt(pos);
        // balance out the next increment
        pos--;
    }
}
// don't remove views until after iteration
List<View> removeViews = new ArrayList<>();
for (int pos = 0; pos < mat.getChildCount(); pos++) {
    if (remove) {
        removeViews.add(mat.getChildAt(pos));
    }
}
for (View view : removeViews) {
    mat.removeView(view);
}
// count in reverse
for (int pos = mat.getChildCount() - 1; pos >= 0; pos--) {
    if (remove) {
        mat.removeViewAt(pos);
    }
}