Alexandr Wake
а как адаптер может отсортировать внутри себя лист? и потом метод notifyDatasetChanged не потрет остальные карточки, которые не подходят под сортировку? Я четно говоря думал, что нужно как-то в методе spinner.setOnItemSelectedListener отсортировать ArrayList и заново установить его в адаптер
Собственно, вариантов много, но все-таки работать с ArrayList лучше в адаптере. Можно в адаптере держать оригинальный ArrayList и копию - то что будет отображаться юзеру.
При фильтрации просто выкидывать лишние элементы из копии и вызывать notifyDataSetChanged. Очевидно, это потрет карточки, которые под фильтр не подходят.
Если надо вернуть как было, то можно на адаптере вызвать какой-то метод типа reset(), и внутри метода этого уже восстановить копию из оригинального ArrayList и отобразить снова все карточки.