Checbox автоматически отображается как выбранный в ExpandableListView - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть ExpandableListView, у которого есть только один дочерний элемент и максимум 2 группы. Этот дочерний элемент имеет вид группы с 4-5 флажками - все групповые представления используют один и тот же дочерний вид.

Когда я проверяю элемент в первом дочернем элементе и япрокручивая вниз, я вижу, что тот же элемент показывает как выбранный во второй группе, повторяю, показывает как выбранный, не вызывая слушателя, просто показывая как проверено

Я прочитал, что это ошибка прокрутки в просмотре списка, но яЯ вижу, у всех есть проблема с тем, что он вызывает слушателя для меня, а не вызывает слушателя, показывая только то, что выбрано, когда я прокручиваю

Желтый - другая группа

После того, как яинициализируя представление, я всегда устанавливаю флажок «все» на «ложь», а слушатель - на «ноль», а затем проверяю, что нужно проверить, и инициализирую слушателя

, и это происходит не на всех устройствах в моем Pixel 2 XL, работает нормально, но нев пикселе 2 у Samsung s6 такая же проблема

1 Ответ

0 голосов
/ 21 ноября 2018

Это общая проблема списков утилизации.Это появляется при прокрутке, когда система решает повторно использовать дочерние ячейки в списке.

Чтобы избежать такой проблемы, вам просто нужно сохранить состояние каждой ячейки с помощью флажка.Например, вы можете сохранить состояние внутри элемента ИЛИ, если у вас есть что-то вроде id (простой уникальный идентификатор), просто создайте HashSet и управляйте состоянием там.Например, при действии «check» необходимо добавить свой идентификатор в HashSet, а при действии «uncheck» удалить определенный идентификатор из набора.И в вашем onBindViewHolder вы должны проверить HashSet.conntains (id), чтобы узнать, проверена ли эта ячейка.

...