Как переопределить фильтр в ArrayAdapter от android?

У меня есть ArrayAdapter, обернутый вокруг ArrayList пользовательских объектов. Я хотел бы написать собственный фильтр для этого адаптера, чтобы при вызове getListAdapter().getFilter().filter("abc") список будет фильтроваться произвольным преобразованием «abc».

Я думал, что просто попытаюсь переопределить ArrayAdapter.getFilter() , но для этого требуется повторная реализация частного ArrayAdapter.ArrayFilter который требует доступа к кучу личных экземпляров ArrayAdapter.

Каков самый простой способ сделать это?

Solutions Collecting From Web of "Как переопределить фильтр в ArrayAdapter от android?"

Сначала рассмотрим исходный код ArrayAdapter .

Вы заметите, что у него есть личное поле mFilter которое используется только в методе getFilter() . Итак, просто ArrayAdapter и переопределите getFilter() чтобы вернуть Filter .

Лучше всего реализовать свой Filter же, как ArrayFilter : как закрытый внутренний класс, поэтому он имеет доступ к закрытым полям ArrayAdapter .

Дайте мне знать, если этого достаточно для завершения задания.