Как из кода управлять состоянием дочерних View в RecyclerView?
У меня есть View, который я генерирую в RecyclerView. В нажатом View есть дочерний элемент, к которому мне нужно получить доступ. Вопрос: как это лучше сделать? Создать класс со статическим View и задавать ему значение в Holder'e при нажатии на Item - я так понимаю, что это не самое идеальное решение, да и android studio ругается на возможную утечку памяти при использовании статических View...
Ответы (1 шт):
По хорошему вы не должны внутри RecyclerView.Adapter иметь какую-либо логику помимо логики биндинка элементов вашего RecyclerView.
Чтобы я вам рекомендовал? Создайте модель которая будет описывать состояние каждой вашей View. И работайте с ней в адаптере. Т.е. не просто список данных которые надо отобразить, а и другие параметры которые могут отражать состояние конкретных ваших View.
Далее в адаптере вам необходимо иметь метод update который будет обновлять ваш адаптер. Если вы не хотите каждый раз обновлять весь список, то посмотрите в сторону DiffUtils (он позволяет обновлять только те элементы которые изменились).
Хорошо бы ваш ClickListener вынести из адаптера во View в которой находится RecyclerView. И Обрабатывать логику где-то за пределами View (Presenter, ViewModel и т.д), а в адаптер передавать только обновленные данные.