Как переопределить фильтр в Android ArrayAdapter?
У меня есть ArrayAdapter, обернутый вокруг ArrayList пользовательских объектов. Я хотел бы написать собственный фильтр для этого адаптера, чтобы при вызове getListAdapter().getFilter().filter("abc")
список будет фильтроваться произвольным преобразованием "abc".
Я думал, что просто попробую переопределить ArrayAdapter.getFilter()
, но для этого требуется повторная реализация закрытого ArrayAdapter.ArrayFilter
, который требует доступа к кучке личных экземпляров ArrayAdapter.
Какой самый простой способ сделать это?
Ответы
Ответ 1
Сначала рассмотрим исходный код ArrayAdapter.
Вы заметите, что у него есть частное поле mFilter
, которое используется только в методе getFilter()
. Итак, просто растяните ArrayAdapter
и переопределите getFilter()
, чтобы вернуть Filter
.
Лучше всего реализовать ваш Filter
так же, как ArrayFilter
: как частный внутренний класс, поэтому он имеет доступ к закрытым полям ArrayAdapter
.
Сообщите мне, достаточно ли информации для выполнения задачи.