2015-06-12 4 views
0

My app so far..Как динамически удалять случайные представления в Android?

Так вот как выглядит мое приложение. Каждый раз, когда я нажимаю кнопку «+», я перехожу в другую деятельность, где вводю описание, дату и время и динамически создаю горизонтальный LinearLayout. С X кнопки слева я УДАЛЕНИЕ сказал раскладки с этим кодом (я знаю, что это не самый лучшим способ, но это работает для меня до сих пор):

 final Task toBeRemoved = x; 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       myLayout.removeView((ViewGroup) v.getParent()); 
       Task.tasks.remove(toBeRemoved); 
      } 
     }); 

..while перебора каждого элемента в list где я храню свои значения в моем методе OnCreate.

Теперь я хочу сделать это, чтобы удалить их с помощью флажков и кнопки «Очистить».

Я добавил каждый макет динамически, поэтому я не могу придумать, как мне определить, какой из них я проверил для удаления. Они не имеют идентификатора, они не могут быть сохранены нигде, поэтому я могу прокручивать их, насколько я знаю. Что я могу сделать в этой ситуации?

ответ

0

Я добавил каждый макет динамически, хотя, так что я не могу думать ни о каком способ для меня, чтобы определить, какой из них я проверил для удаления

, что это не так. Вы можете позвонить setId() или setTag() в то время как вы добавляете каждый макет,

Они не имеют никакого идентификатора, они не могут быть сохранены в любом месте, так что я могу перебирать через них, насколько я знаю. Что я могу сделать в этой ситуации?

сейчас у них есть один. Вы можете использовать findViewById или findViewWithTag

+0

Как я могу 'setId()' в цикле? Как для моих макетов, так и для флажков? Начиная с некоторого случайного числа и увеличиваясь на 1 на каждой новой итерации или что? – user3213110

2

Пару путей. Можно было бы установить слушателей в каждом новом флажке и сохранить набор представлений с проверенным состоянием (добавьте в набор, если флажок установлен, удалите, когда он снят). Затем, когда нажата кнопка clear, вы удаляете все виды в этом наборе.

Другой способ состоит в том, чтобы прорвать все дочерние представления родительского макета над динамически. Для каждого найдите дочерний элемент checkbox через findViewById и посмотрите, есть ли его проверка. Удалите его, если он есть. Это вычислительно дорого, если у вас много сложных видов.

Я предпочитаю метод 1 самостоятельно, но либо работает.

0

Вот решение, которое я считаю довольно крутым.

Создайте виджет на своем собственном. Это легко.

Итак, у вас будет класс, который расширяется ... возможно, LinearLayout.Проходит к вашим потребностям.

Вы создаете кнопку, editText, текстовое окно и флажок, чем вы добавляете такие функции, как вы хотите.

При нажатии кнопки «Флажок» вы хотите, чтобы кнопка круга X активизировалась, и когда вы нажимаете ее, она удаляет всю «вещь». Таким образом вам даже не понадобится кнопка очистки. все равно нужна кнопка добавления, поэтому вы можете добавить, сколько из этих элементов вам нужно.

Это легко, практично и делает код многоразовым, что я всегда ищу.

Если вам нужна дополнительная помощь, я могу помочь вам немного подробнее, но я не всегда могу быть рядом, поэтому я сожалею, если я буду реагировать немного медленно.

Смежные вопросы