Как я могу применить шаблон ViewHolder к ChipGroup
У меня есть RecyclerView
и каждый элемент списка имеет ChipGroup
в этом. Я хочу надуть Chip
s из XML и добавить их в ChipGroup
, Каждый элемент списка имеет от 1 до 4 фишек. Если мой RecyclerView
имеет 50 предметов, Chip
S раздувают от 50 до 200 раз. Благодаря шаблону ViewHolder, RecyclerView
предметы раздуваются только один раз. Должно быть возможно снизить уровень инфляции до максимум 50 для Chip
s. Как я могу применить то же самое ViewHolder
шаблон для Chip
s?
2 ответа
Если каждый элемент в RecyclerView
имеет 1-4 фишки, я думаю, что было бы разумно просто всегда раздувать четыре фишки, но динамически показывать / скрывать их, когда вы связываете ViewHolder
, Если у вас огромное количество фишек, эта стратегия может быть не идеальной, но для четырех она должна подойти.
Если я правильно понял, вас беспокоит производительность RecyclerView. Вы не показываете свой код и не предоставляете снимки экрана, поэтому я предполагаю, что у вас на экране от 5 до 8 элементов, и всего 50 из них. Как всем известно, RecyclerView, представленный Google, делает именно это - решает проблемы с производительностью больших списков. Когда элемент больше не отображается на экране, убедитесь, что RecyclerView... перерабатывает его (читай: удаляет его из памяти). Так что в вашем случае всего от 5 до 24 фишек на экран - не такая уж и большая проблема. И ИМХО, нет лучшего способа справиться с инфляцией и переработкой представлений лучше, чем это делает RecyclerView. Ребята из Google сделали его очень надежным и умным.
Шаблон ViewHolder повторно использует каждое представление, объявленное в ViewGroup. Вы добавляете Chips динамически в свою ChipGroup (и, следовательно, в ViewGroup) для каждого элемента; RecyclerView не может узнать, какие фишки вы хотите использовать повторно.
Вы можете создать 50 чипов-заполнителей в макете ChipGroup в XML, а затем динамически обновлять / показывать / скрывать их, но это не очень элегантное решение.