Я пытаюсь создать способ поиска в RecyclerView с анимацией искомых элементов (скрыть те, которые не соответствуют условию, и добавить те, которые выполняют, если они еще не в ).
Конечно, самый простой способ поиска RecyclerView - это просто отфильтровать список и notifyDataSetChanged()
. Но большинство разработчиков знают, что этот вызов воссоздает адаптер с нуля, почти так же, как он был назначен. Кроме того, этот вызов не дает ощущения поиска предметов, так как все предметы появляются одновременно.
Я пытался создать способ, при котором элементы добавляются или удаляются в списке, когда они соответствуют / не соответствуют условию, но это теряет порядок элементов. Если, конечно, вы не ищете, где элемент находится в основном списке, и помещаете его туда, где он принадлежит. Что делает поиск дольше, так как вы снова ищите каждую вставку.
Я рассмотрел использование TreeMap
, но деревья не могут быть доступны по индексу, только по ключу.
Я также использовал SparseArray
, единственная проблема заключалась в том, что SparseArray
не говорит вам, по какому индексу был вставлен элемент, вам придется снова искать элемент (чтобы уведомить адаптер ).
Есть ли рекомендуемый способ сделать это? Какой учебник я пропустил? В поисках я смог найти только решение notifyDatasetChanged()
.