Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Использование ScrollView вместо ListView

Есть приложение (чат) в котором нужно сделать отображение сообщений в виде списка. Но не просто отобразить списком view-хи с текстом, view могут содержать в себе еще картинки + view сами по себе могут быть разными. При простом отображении элементов выбор пал бы на ListView. Но нужно не только их отображать но и иметь возможность их видоизменять, анимировать и т.д. Попробовав сделать список через ScrollView я столкнулся с проблемой что ScrollView притормаживает, как я понял потому что элементы не пересоздаются, а хранятся в памяти! Вопрос: каким образом лучше реализовать нужную задачу, лично я склоняюсь к ScrollView, так как с ним по идее должно быть проще работать, но как можно решить проблему притормаживания, может есть какие то механизмы?
p.s. может кто то знает как подобные задачи реализован в Viber, VK и остальные messanger


Ответ

Не используйте ScrollView, со временем он будет тормозить еще больше, по мере добавления View. Используйте RecyclerView, примеров в сети достаточно. В нем вы можете указывать любые View в зависимости от объекта, который вам нужно показать. В добавок "ячейки" в RecyclerView которые ушли за экран, дестроятся. это экономит память.
UPD У RecyclerView можно переопределить метод getItemViewType(), и в зависимости от возвращаемого значения в onCreateViewHolder() в можете подставлять нужную View

Комментариев нет:

Отправить комментарий