Подтвердить что ты не робот

Удаление всех представлений детей из представления

Как удалить все дочерние представления из виджета? Например, у меня есть GridView, и я динамически раздуваю много других LinearLayouts; позже в моем приложении я хочу начать с этого GridView и очистить все его дочерние представления. Как мне это сделать? ТИА.

4b9b3361

Ответ 2

Вы можете удалить только некоторые типы представлений в ViewGroup с помощью этой функции:

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;
        }
    }
}

Ответ 3

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);
        }
    }
}

Ответ 4

Попробуйте это

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

Этот код работает для меня.