Search through RecyclerView using Searchview

前端 未结 5 406
谎友^
谎友^ 2020-12-16 23:31

I want to search through RecyclerView, I have List (BaseOfCards is my getter&setter class) My RecyclerViewAdapter<

5条回答
  •  再見小時候
    2020-12-16 23:49

    I solved my problem

    1. Make my class RecyclerViewAdapter implements Filterable

    2. Add line private List orig;

    3. Add method getFilter in RecyclerViewAdapter

      public Filter getFilter() {
      return new Filter() {
          @Override
          protected FilterResults performFiltering(CharSequence constraint) {
              final FilterResults oReturn = new FilterResults();
              final List results = new ArrayList();
              if (orig == null)
                  orig  = items;
                  if (constraint != null){
                      if(orig !=null & orig.size()>0 ){
                          for ( final BaseOfCards g :orig) {
                              if (g.getCardName().toLowerCase().contains(constraint.toString()))results.add(g);
                          }
                      }
                      oReturn.values = results;
                  }
                  return oReturn;
              }
      
      @Override
          protected void publishResults(CharSequence constraint, FilterResults results) {
              items = (ArrayList)results.values;
              notifyDataSetChanged();
      
          }
      }; 
      
    4. Make MainActivity implements SearchView.OnQueryTextListener and change method onQueryTextChange :

      @Override
      public boolean onQueryTextChange(String newText) {
          if ( TextUtils.isEmpty ( newText ) ) {
              adapter.getFilter().filter("");
          } else {
              adapter.getFilter().filter(newText.toString());
          }
          return true;
      }
      

提交回复
热议问题