Как создать вложенный список с помощью панели поиска на панели инструментов android? - PullRequest
0 голосов
/ 10 марта 2020

Я попробовал этот код и не возвращает введенный текст. Это мои Addtocartitems. java:

enter image description hereenter image description here

Это мои загруженные элементы. java:

enter image description here

Это мой DownloadedListAdapter2. java:

enter image description here

This В программе нет ошибок, но ничего не произошло. Кто-нибудь может мне помочь, пожалуйста? Заранее спасибо!

1 Ответ

2 голосов
/ 10 марта 2020

Создайте переменную списка в классе адаптера

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;
        }
    });
...