Нормально ли хранить состояние selected в экземпляре элемента RecyclerView?
Задача: по клику изменить фон выбранного элемента. И установить фон по умолчанию для элемента, который был выбран до этого (если был).
Я решил хранить флаг selected в классе, который представляет объект. При клике пройтись по всем элементам и всем выставить флаг в false, а выбранному элементу установить значение true.
Насколько это приемлемо с точки зрения принятых соглашений? (какое количество WTF? в минуту можно услышать, показав такой код другим разработчикам?)
И еще: где помимо Android Studio можно найти актуальные примеры решения таких вот шаблонных задач, чтобы не плодить банальные вопросы на Тостере?
"Я решил хранить флаг selected в классе, который представляет объект" - what kind of object: data or ViewHolder.
If data - it's acceptable, if ViewHolder - no (it's a way to bugs)
Спасибо, я имею ввиду data objects. А как именно использование объектов ViewHolder может привести к багам? Во время переиспользования экземпляра для других элементов списка?
Так действительно намного проще. Но это ведь дилемма, и думаю очень старая: хранить состояние объекта вместе с данными, которые он представляет, или хранить в классе, который работает с этими данными.
Мой опыт подсказывает, что первый путь ведет к меньшему количеству багов. И проще поддается изменениям (а изменять, как правило, приходится)
Это только так и делается. У айтема который передаем во ViewHolder добавляем поле isSeleсеted, по клику передаем событие во внешнею среду (активити/презентер/фрагмент етц) какой элемент выбран(обрабатываем наш список) и обновляем ресайклер, желательно с DiffUtils.