Создайте переменную списка в классе адаптера
List<DownloadedItems> downloadedItemsList= new ArrayList<>();
внутри вашего конструктора, пожалуйста, запишите это
public DownloadListAdapter(Context context, int resource, ArrayList<DownloadedItems> object){
super(context,resource,object);
this.mcontext= context;
this.mResource=resource;
this.downloadedItemsList= object;
}
создайте метод в адаптере, который получает список
public void setData(List<DownloadedItems> modelList) {
this.downloadedItemsList= modelList;
notifyDataSetChanged();
}
Теперь вызовите метод фильтра с новым отфильтрованным списком и передайте этот список методу адаптера
private void filter(String text) {
List<DownloadedItems> filteredList = new ArrayList<DownloadedItems>();
for (DownloadedItems la :langList) {
if (la.langName.toLowerCase().startsWith(text.toLowerCase())) {
filteredList.add(la);
}
adapter.setData(filteredList);
}
}
Вы можете изменить метод .startsWith на. Содержит по вашему требованию. Этот метод возвращает элементы, которые начинаются с введенной строки. langList - это начальный список, который я уже передал адаптеру для представления.
la.langName.toLowerCase().startsWith
это запрос фильтра, элемент, который я использую для сравнения с фильтром. Я ищу название языка из списка. Таким образом, вы можете изменить в соответствии с вашими требованиями. И вызвать метод метод из
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText)
return true;
}
});