如何使用Searchview显示“找不到结果”

问题描述 投票:0回答:1

这是我在“if(query == null)”中的代码。正如您所看到的,我没有在那里放任何代码,因为如果用户的输入与searchview不匹配,我不知道如何在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();
        }
    };
}
android searchview
1个回答
0
投票

在XML中设置TextView并为其设置此行android:visibility="gone"

在你的Activity里放这个代码......

if (listMesage.isEmpty()) {
     mRecyclerMessage.setVisibility(View.GONE);
     mTxtEmpty.setVisibility(View.VISIBLE);
   }
    else {
     mRecyclerMessage.setVisibility(View.VISIBLE);
     mTxtEmpty.setVisibility(View.GONE);
   }
© www.soinside.com 2019 - 2024. All rights reserved.