Функция поиска не фильтруется должным образом - PullRequest
1 голос
/ 19 октября 2019

Я пытался реализовать функцию поиска в одном из действий, чтобы выполнить поиск через recyclerView, который настроен во фрагменте. Однако, когда я изменяю текст в моем SearchView, все элементы из recyclerView просто исчезают. Я впервые играю с поиском, поэтому понятия не имею, что теперь делать.

Не знаю, стоит ли мне упоминать, но я использую пожарную базу Firebase. Я должен также упомянуть, что мой onCreateOptionsMenu находится во фрагменте, но onOptionsItemSelected () находится в MainActivity.

Это мой адаптер. event_list_full - это копия списка событий здесь.

 @Override
    public Filter getFilter() {

        return eventListFilter;
    }


    private Filter eventListFilter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
        List<EventPost> filteredList = new ArrayList<>();
         if( charSequence == null || charSequence.length()==0){
             filteredList.addAll(event_list_full);
         } else {
             String filterPattern = charSequence.toString().toLowerCase().trim();
             for(EventPost item : event_list_full){
                 if(item.getDesc().toLowerCase().contains(filterPattern)){
                     filteredList.add(item);
                 }
             }
         }
         FilterResults filterResults = new FilterResults();
         filterResults.values = filteredList;
         return filterResults;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {

            event_list.clear();
            event_list.addAll((List) filterResults.values);
            notifyDataSetChanged();

        }
    };

А это код HomeFragment.java. У меня также есть setHasOptionsMenu (true);в onCreateView ().

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.main_menu, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search_button);
        SearchView searchView = (SearchView) searchItem.getActionView();

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                eventRecyclerAdapter.getFilter().filter(s);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {


                return false;

            }
        });

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...