Android: можно ли кэшировать содержимое Layout'ов?
Доброго времени суток.
Есть ListView, а внутри него динамически раздувается ещё пара LinearLayout'ов.
Заметил, что в некоторых случаях на их создание уходит слишком много времени, и задумался о кэшировании содержимого.
Собственно, вопрос: можно ли завести, например, LruCache, который хранил бы объекты класса LinearLayout, и как-то их использовать заново?
Что же, отвечу сам себе на свой же вопрос.
Если у вас есть какой-то список, в элементы которого динамически вставляются ещё layout'ы, лучшим вариантом будет создать LruCache, который будет эти самые layout'ы хранить.
А дальше просто в getView() они удаляются, и заново вставляются из LruCache (удаление требуется для того, чтобы программа не валилась с "The specified child already has a parent").
1. избавляйтесь от лишней вложенности
2. юзайте холдеры, хотя бы первый уровень создаваться не будет.
3. и под содержимым что подразумевается , только лейоуты ?
Конкретно: список - это переписка Вконтакте, где каждый элемент - это RelativeLayout, внутри которого в том числе есть LinearLayout'ы для вложений и пересланных сообщений.
Холдер используется для TextView на поверхности, можно ли для лэйаутов использовать? Сейчас я делаю removeAllViews() и размещаю вложения и пересланные сообщения по-новой, чувствую, что как-то можно улучшить этот момент.
ну, у меня есть проект, где некоторый итемы могут быть "рандомные".
да, я тоже делаю removeAllViews() , но это не сильно тормозит списки. я бы сказал, вполне плавненько, учитывая, что почти все создается на лету.
с другой стороны, я урезал все до минимума. максимальная вложенность не более 4-х