удалить динамические переключатели

#android

#Android

Вопрос:

Есть ли у кого-нибудь быстрый и простой способ удаления динамически добавляемых кнопок из линейного макета в Android? Кажется, они хранятся в сохраненном состоянии экземпляра, и я не хочу, чтобы они возвращались к действию.

Ответ №1:

Вы можете очистить ВСЕ представления в линейном макете, используя следующий код:

 LinearLayout myLayout = (LinearLayout)findViewById(R.id.your_linear_layout);
myLayout.removeAllViews();
  

Однако, если вы хотите удалить только те представления, которые были добавлены динамически (и у вас есть представления, которых там нет), это не сработает.

Если вам нужно сделать это таким образом, вы можете сделать что-то вроде этого

         LinearLayout l = (LinearLayout)findViewById(R.id.linearLayout);
        List<View> removeViews = new ArrayList<View>();
        int count = l.getChildCount();
        for (int i = 0; i < count; i  ) {
            View v = l.getChildAt(i);
            if (v != null amp;amp; v.getTag() != null
                    amp;amp; v.getTag().toString().equals("dynamicView")) {
                removeViews.add(v);
            }
        }

        for (View v : removeViews) {
            l.removeView(v);
        }
  

Пожалуйста, обратите внимание на v.getTag() != null amp;amp; v.getTag().toString().equals(«dynamicView») часть. Однако вам не обязательно делать это таким образом, это был бы простой способ отличить добавленное вами представление от статически созданного.

Отредактируйте, чтобы это работало при создании представления, которое вам нужно вызвать view.setTag(«dynamicView»); конечно