169 похожих чатов

> каждый раз нужно при onBind для каждого элемента вложенного

RecyclerView делать setLayoutParams
Ага. Только почему это плохо? Ну и всегда можно взять не Ресайкл, как выше сказали

11 ответов

5 просмотров

Касательно делать каждый раз setLayoutParams в onBind думал производительность упадёт. Если я создам два LinearLayoutManager один вертикальный и один горизонтальный и буду переиспользовать их не будет ли у меня каких ни будет попочных эффектов? На данный момент у себя в коде для вложенного RecyclerView в onBind я смотрю на флаг isVertical который приходит с backend и каждый раз создаю новый LayoutManager соответствующей ориентацией.

Leonid B.
Один RV и getItemViewType не подойдут?

Думал про это, но как по мне в моей задаче ничего сильно не измениться, может я ошибаюсь. У меня на данный момент во внешной Recyclerview 2 viewType. companion object { const val VIEW_TYPE_ARRAY = 1 const val VIEW_TYPE_SWITCH = 2 } Вот код для VIEW_TYPE_ARRAY, где вложенный RecyclerView должен быть вертикальный или горизонтальный. Тут особо не много кода. inner class ArrayViewHolder(val binding: ViewHolderConstructorArrayBinding) : RecyclerView.ViewHolder(binding.root) { val adapter = OptionAdapter() init { adapter.listener = listener binding.rvOptions.adapter = adapter } fun bind(item: Element) { binding.item = item.message adapter.message = item.message if (item.message.isVertical) { adapter.itemWidth = fullWidthOfButton binding.rvOptions.layoutManager = LinearLayoutManager(binding.root.context, RecyclerView.VERTICAL, false) } else { val countOfOptions = item.options?.size ?: 0 adapter.itemWidth = (fullWidthOfButton - spaceBetweenItems * countOfOptions) / countOfOptions binding.rvOptions.layoutManager = LinearLayoutManager(binding.root.context, RecyclerView.HORIZONTAL, false) } adapter.items.clear() item.options?.let { adapter.items.addAll(it) } adapter.notifyDataSetChanged() } }

SE
Думал про это, но как по мне в моей задаче ничего ...

А можно еще картинки вариантов того, как это должно выглядеть на экране?

SE
Да, сейчас скину

Тут первый красный прямоугольник это с вертикальный вложенным RecyclerView, а второй красный прямоугольник с горизонтальным RecyclerView. Красные прямоугольники это просто на сам нарисовал поверх скриншота.

Mike (деньги не клянчу)
откуда берётся fullWidthOfButton? Выглядит стрёмно...

берётся оно с Activity метод getSize. Его берёт ViewModel и делает вычитание с layoutMargins, а потом передаёт адаптеру RecyclerView поле fullWidthOfButton.

SE
screenshot Тут первый красный прямоугольник это с вертикальны...

Согласен, что конкретно под такое вложенные RV не нужны. Нужны два доп. view type под горизонтальный и вертикальный вид.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
{!! $modx->runSnippet( 'multiTV',[ 'tvName'=>'slider-main1', 'docid'=>'[*id*]', 'tplConfig'=>'', 'display'=>'4', 'offset'=>'0', 'rows'=>'all', 'ra...
Роман С
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
PopOs or Linux Mint for a noob starter? Also do you have any articles on how to safely dual boot Windows 10 alongside it? I've heard there are a bunch problems that can occur...
Senator
14
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Из рассылки The Lazarus team is glad to announce the release of Lazarus 3.4. This is a bugfix release and was built with FPC 3.2.2. Here is the list of changes for Lazarus...
Ed Doc
4
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Карта сайта