У меня есть ListView с пользовательским адаптером, который расширяет BaseAdapter. Источником ListView является ArrayList с пользовательскими объектами. Эти пользовательские объекты имеют избранную переменную-член. Я хочу, чтобы пользователь мог щелкнуть по значку на панели действий и переключить, показывает ли список все объекты, или только те, у которых свойство «Избранное» установлено равным true.Фильтр ListView на основе, если выбрана опция «Избранное»
Мое первое видное решение - создать два массива ArrayLists, один со всеми объектами, один со всеми избранными. Затем на кнопку действия мыши, переключить список источников адаптера между двумя списками, как это:
protected void toggleList(){
CustomAdapter adapter;
if (favoriteSelected){
adapter=new CustomAdapter(this,favoriteList);
}else{
adapter=new CustomAdapter(this,fullList);
}
listView.setAdapter(adapter);
}
Это кажется, что это будет работать, но мне трудно поверить, что не существует какое-то чистый метод для фильтрации результатов просмотра списка. Единственная информация, которую я смог найти, - это фильтрация на основе ввода текста пользователем.
уверен, метод реализовать свой собственный класс фильтра, возвращает его экземпляр в YourAdapter.getFilter(), (YourAdapter необходимо реализовать интерфейс Фильтруемые) – pskink