чекбокса внутри RecyclerView кидает IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling. В интернете посмотрел, сказали завернуть notifyDataSetChanged() в Runnable но не помогло. Ошибку перестало выдавать но чекбоксы стали работать странно + перестал работать дропдаун. Есть идеи как исправить?
https://gist.github.com/surik-simyan/fa0a3343704db073d194c6b731a25db3
А где ваш класс ChangeCollapseState()?
72 строка
Класс внутри интерфейса и реализующий этот самый интерфейс уже выглядит интересно. View binding у фрагмента не по уставу. Утечёт. setMargin с абсолютными значениями пикселей - будет разный результат на разных эранах. Возможно, что у чекбокса нужно установить листенер в null, затем поменять isChecked, затем установить листенер.
Где это класс внутри интерфейса? Немного не понял что не так с view binding-ом? setMarginInDp это extension function написанной мною для установления margin в dp
А в чем собственно кроется проблема? Почему листенер может вызывать такую проблему?
interface Item, open class Base.
Ах это, это не моя реализация если честно), @JohnnySC автор
Желательно все размеры держать в dimen.xml, для их чтения использовать getDimensionPixelSize или getDimension.
да капец. почему Карл. все же должно было быть изи
Хмм, ок, этот момент переделаю
Потому что когда меняете isChecked, то вызывается существующий listener.
Такая же проблема при setOnClickListener
Во фрагменте ViewBinding обязательно должен быть nullable и занулен в onDestroyView. Либо юзайте специальные property-delegates для ViewBinding, в которых есть LifecycleObserver.
Аа, ок, спасибо за совет
у тебя чекбокс должен быть имеджвью тупой картинкой на самом деле чтобы избежать таких кейсов
ровно так же как я сделал имеджвью для дропдауна
Лучше так не делать. Чекбокс должен быть чекбоксом, кнопка - кнопкой и т.д.
да пусть сначала так сделает, порадуется что работает а потом мучается с чекбоксом
Так обрадуется же и оставит как есть 😁 А потом наступит на какие-нибудь новые грабли из-за этого.
Обсуждают сегодня