Как переопределить фильтр в Android ArrayAdapter? - PullRequest
15 голосов
/ 20 апреля 2010

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

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

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

1 Ответ

12 голосов
/ 21 ноября 2010

Сначала взгляните на исходный код ArrayAdapter .

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

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

Дайте мне знать, достаточно ли информации для выполнения задачи.

...