В вашем методе publishResults
вы вызываете метод Adapter
add
для каждого результата.Каждый раз, когда вызывается метод add, список уведомляется о том, что он был изменен.
Это может вызвать медленное поведение, которое вы видите.
Вместо этого используйте метод Adapter
addAll
,Уведомление об изменении набора данных должно вызываться для вас addAll
, если вы не изменили поведение по умолчанию с помощью setNotifyOnChange
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
clear();
if (results != null && results.count > 0) {
addAll(results)
}
}
Вы также можете оптимизировать свой метод performFiltering
для использования trie структура данных, но я не думаю, что вам нужно для 1000 пунктов.