Entfernen aller untergeordneten Ansichten aus der Ansicht

Lesezeit: 2 Minuten

Wie würde ich alle untergeordneten Ansichten aus einem Widget entfernen? Zum Beispiel habe ich eine GridView und ich baue viele andere LinearLayouts dynamisch darin auf; Später in meiner Anwendung möchte ich mit dieser GridView neu beginnen und alle untergeordneten Ansichten löschen. Wie würde ich das tun? TIA.

viewGroup.removeAllViews()

funktioniert für jede viewGroup. In Ihrem Fall ist es GridView.

http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews()

  • Tatsächlich löst removeAllViews() eine Ausnahme aus, wenn es für GridView aufgerufen wird. Aus den Dokumenten: “Diese Methode wird nicht unterstützt und löst beim Aufruf eine UnsupportedOperationException aus.”

    – Moritz

    9. Februar 2012 um 11:43 Uhr


  • Dieser Kommentar gilt für die abstrakte Basisklasse, von der ViewGroup abgeleitet ist. ViewGroup selbst und alle seine abgeleiteten Klassen unterstützen removeAllViews.

    – Dale Wilson

    30. Juli 2013 um 21:32 Uhr

  • Wie kommt man ViewGroup ?

    – Nimmagadda Gowtham

    28. November 2015 um 17:36 Uhr

  • @NimmagaddaGowtham Die meisten XxxLayout-Klassen (LinearLayout, RelativeLayout usw.) sind untergeordnete Klassen von ViewGroup. Wenn Sie eine davon haben, haben Sie bereits eine ViewGroup.

    – Großer Auftakt

    24. April 2016 um 14:26 Uhr

Benutzer-Avatar
TienLuong

Sie können nur einige Ansichtstypen in a entfernen ViewGroup mit dieser Funktion:

private void clearImageView(ViewGroup v) {
    boolean doBreak = false;
    while (!doBreak) {
        int childCount = v.getChildCount();
        int i;
        for(i=0; i<childCount; i++) {
            View currentChild = v.getChildAt(i);
            // Change ImageView with your desired type view
            if (currentChild instanceof ImageView) {
                v.removeView(currentChild);
                break;
            }
        }

        if (i == childCount) {
            doBreak = true;
        }
    }
}

  • Abgestimmt, weil das OP nicht gefragt hat, wie verschiedene Arten von untergeordneten Ansichten entfernt werden können. Das OP wollte alle untergeordneten Ansichten entfernen.

    – geschütztes Mitglied

    3. Juli 2017 um 9:53 Uhr

Versuche dies

RelativeLayout  relativeLayout = findViewById(R.id.realtive_layout_root);
    relativeLayout.removeAllViews();

Dieser Code funktioniert bei mir.

Benutzer-Avatar
kot32go

Versuche dies

void removeAllChildViews(ViewGroup viewGroup) {
    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        View child = viewGroup.getChildAt(i);
        if (child instanceof ViewGroup) {
            if (child instanceof AdapterView) {
                viewGroup.removeView(child);
                return;
            }
            removeAllChildViews(((ViewGroup) child));
        } else {
            viewGroup.removeView(child);
        }
    }
}

1334830cookie-checkEntfernen aller untergeordneten Ansichten aus der Ansicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy