Android: как удалить элемент из сетки, чтобы оставшиеся элементы перетасовывались на место

ФОН:
У меня есть сетка из 36 кнопок, скажем, 6 строк и 6 столбцов с номерами от 1 до 36, отображаемых по 2 строки за раз с помощью GridView и пользовательского адаптера.

Сетка отображается нормально, и вся прокрутка работает правильно.

ВОПРОС:
Я хочу иметь возможность щелкнуть элемент, удалить его из сетки, а оставшиеся элементы перетасовать на место. В настоящее время я могу отключить отключенный элемент, установить его видимость на INVISIBLE или GONE, но ни один из них фактически не удалит его с дисплея.

Предложения?


person Noah    schedule 15.03.2011    source источник


Ответы (2)


В частности, вам нужно удалить соответствующий объект из набора данных базового адаптера, а затем вызвать adapter.notifyDataSetChanged(). Однако это не предоставит вам анимацию, если это было частью этого вопроса.

Может быть интересно попробовать анимацию движения для рассматриваемый элемент, а затем, наконец, удалите его из адаптера в конце. Я плохо разбираюсь в анимации, поэтому не уверен, насколько хорошо это будет работать в AdapterView.

person Matthew Willis    schedule 15.03.2011
comment
Я могу удалить несколько элементов одновременно, подумайте, проведя пальцем по некоторым элементам. Буду ли я вызывать проблемы с производительностью, если я вызову notifyDataSetChanged() несколько раз, или я должен попытаться кэшировать изменения и вызывать только один раз? - person Noah; 15.03.2011
comment
Вероятно, вам следует внести все свои изменения, а затем уведомить, если это возможно. Я не думаю, что это имеет большое значение, потому что notifyDataSetChanged() не заставит ListView немедленно выполнять чрезмерный объем работы. - person Matthew Willis; 15.03.2011

Вы должны иметь возможность обновить адаптер, а затем вызвать notifyDataSetChanged. для принудительного обновления представления сетки.

person Cheryl Simon    schedule 15.03.2011