Как отобразить «ничего не найдено» с помощью Searchview - PullRequest
0 голосов
/ 18 марта 2019

Вот мой код в «if (query == null)». Как вы можете видеть, я не помещаю туда никакого кода, потому что я не знаю, как отобразить «никаких результатов не найдено» в RecyclerView, если пользователь не сопоставляет свои входные данные с поисковым обзором. Я использую RecyclerView для отображения результатов поиска пользователя.

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
    inflater.inflate(R.menu.menu_main, menu);

    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
    searchView = (SearchView) menu.findItem(R.id.action_filter_search)
            .getActionView();
    searchView.setSearchableInfo(searchManager
            .getSearchableInfo(getActivity().getComponentName()));
    searchView.setMaxWidth(Integer.MAX_VALUE);
    searchView.setQueryHint(getResources().getString(R.string.search_hint));


    // listening to search query text change
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            // filter recycler view when query submitted
            mAdapter.getFilter().filter(query);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String query) {
            // filter recycler view when text is changed
            mAdapter.getFilter().filter(query);
            return false;
        }
    });

    super.onCreateOptionsMenu(menu, inflater);
}

в адаптере

@Override
public Filter getFilter() {
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            String charString = charSequence.toString();
            if (charString.isEmpty()) {
                categoriesFiltered = categorieslist;
            } else {
                List<CategoriesP> filteredList = new ArrayList<>();
                for (CategoriesP row : categorieslist) {

                    // name match condition. this might differ depending on your requirement
                    // here we are looking for name or phone number match
                    //|| row.getPhone().contains(charSequence)
                    if (row.getName().toLowerCase().contains(charString.toLowerCase()) ) {
                        filteredList.add(row);
                    }
                }

                categoriesFiltered = filteredList;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = categoriesFiltered;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults filterResults) {
            categoriesFiltered = (ArrayList<CategoriesP>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}

1 Ответ

0 голосов
/ 18 марта 2019

Установите TextView в своем XML и установите для него эту строку android:visibility="gone".

в своей деятельности вставьте этот код ...

if (listMesage.isEmpty()) {
     mRecyclerMessage.setVisibility(View.GONE);
     mTxtEmpty.setVisibility(View.VISIBLE);
   }
    else {
     mRecyclerMessage.setVisibility(View.VISIBLE);
     mTxtEmpty.setVisibility(View.GONE);
   }
...