Задать вопрос

Оптимизация addView/removeAllChildren для кастомного компонента в Android?

Всем привет!


Я новичок в разработке под Android. Передо мной встала довольно простая задача, с которой справился, но пока как-то неполноценно, т.к. ощущение, что я либо не тем путем иду, либо надо банально оптимизировать что-то, т.к. лагает.


Суть задачи: есть элемент в списке (ListView), в нем есть кнопка. При нажатии на кнопку меняется состояние этого элемента и он показывает в некоторой части себя (элемента списка) другую View.


При смене состояния я дергаю removeAllChildren, а потом addView той View, которая у меня заранее была создана LayoutInflator'ом и закеширована.


Тоже самое происходит и когда Adapter пропихивает данные по вызову getView. И вот в этот самый момент когда нужно пересоздать детей и возникает лаг. Если он возникает по нажатии на кнопку — это еще ничего. Но при прокрутке он возникает постоянно, т.к. известно что View представляющие элементы списка в ListView переиспользуются.


Дорогой Хабр, подскажи, пожалуйста мне нубу, как правильно такие вещи делают толковые Android разработчики?


P.S. Я сначала полагал, что дело в том что в элементе списка сложная иерархия layout'ов. Я ее сплющил, заменив одним RelativeLayout и накидав в него компоненты. Но это не помогло, т.к. дело, я уверен, именно в removeAllChildren/addView
  • Вопрос задан
  • 3499 просмотров
Подписаться 3 Комментировать
Подписчики вопроса 3 К ответам на вопрос (1)