Search
Write a publication
Pull to refresh

Comments 6

которые обладали очень медленным перфомансом при поиске выбранных элементов

Привет, а в чём были просадки производительности? В любом случае все такие решение приводят к использованию map подобных штук… а её производительность при нормальных условиях — достаточная для этой задачи точно)

Модифицировать модель вот так:
data class AnyItem (
...
var isSelected: Boolean
)

это был один из вариантов, в таком случае бы пришлось перебирать все данные в адапере.
Еще как вариант был хранить просто id итемов, но от хранения id в set я быстро перешел к map с ключем и самим итемом
inner class ViewHolder
не стоит так делать, вся фишка этого паттерна как раз в том что холдер должен статичный (просто class в kotlin) и при необходимости может быть легко собран gc.
В данном случае используется inner для получения внутренних полей класса RecyclerViewAdapter
  • почему не используется ListAdapter и почему вычисление calculateDiff() происходит не в отдельном потоке?
  • как уже сказали выше inner-класс тут лишний. Все что нужно ViewHolder'у можно передать через его конструктор, или засетать прямо в onCreateViewHolder()
  • сетать onClickListener (и lifecycleOwner) при каждом onBind() — так себе вариант. при каждом вызове onBind() будет создаваться новый экземпляр View.OnClickListener(). достаточно это сделать в init {} вьюхолдера
Спасибо за комментарий, учту в следующих версиях)
Sign up to leave a comment.

Articles