Android RecyclerView прокручивается вверх, когда дочерний элемент развернут / свернут - PullRequest
0 голосов
/ 28 июня 2018

У меня есть список элементов в представлении переработчика, которые генерируются динамически с помощью привязки данных. Каждый элемент имеет вид снизу, который изначально установлен на View.GONE, однако, как только пользователь щелкает элемент и вид расширяется, вид переработчика автоматически прокручивается обратно к вершине списка. И наоборот, если представление развернуто и затем снова щелкнуто, чтобы свернуть, представление переработчика снова прокручивается в верхнюю часть списка. Я попытался отслеживать идентификаторы элементов для адаптера (снова используя привязку данных), устанавливая фокус на дочерний элемент при их развертывании или свертывании, и используя привязывающие адаптеры для анимации самого развертывания / свертывания.

Я подозреваю, что адаптер в представлении перезапуска получает предупреждение onNotifyDataChanged(), когда высота одного из дочерних элементов изменяется, предоставляя дополнительное представление (хотя все еще внутри одного из дочерних элементов, но не отдельного дочернего элемента в списке ) и автоматически прокручивается к началу. Есть ли способ переопределить это? Кто-нибудь знает, что еще может быть причиной того, что список щелкает вверх, когда один из элементов нажимается -> развернуто / свернуто?

1 Ответ

0 голосов
/ 28 июня 2018

Так что я нашел решение своей проблемы на случай, если кто-то столкнется с чем-то похожим. Я фактически закончил тем, что нашел этот ответ: RecyclerView notifyDataSetChanged прокручивает к верхней позиции

и второе решение с использованием разнесенного менеджера компоновки - это маршрут, по которому я пошел, поскольку я хочу иметь возможность обернуть содержимое. Мои подозрения были верны, что это было связано с изменением высоты элементов в представлении переработчика. Обернутое содержимое родительского элемента расширяемого элемента, поэтому представление переработчика было вынуждено пересчитать размер элемента после того, как расширяемая часть появилась / исчезла (по крайней мере, это то, что я получил из этого).

...