Android Studio Custom Search in Recyclerview Or Filter Search Query

Android Studio Custom Search in Recyclerview Or Filter Search Query

01 Step ( Create Drawable Icon) \app\src\main\res\drawable\ic_baseline_search_24.xml

<vector android:height="24dp" android:tint="#FFFFFF"    android:viewportHeight="24" android:viewportWidth="24"    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">    <path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/></vector>

02 Step (Create an Menu View )\app\src\main\res\menu\menu_main_se.xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto">    <item        android:id="@+id/action_search"        android:icon="@drawable/ic_baseline_search_24"        android:title="Search"        app:actionViewClass="android.widget.SearchView"        app:showAsAction="ifRoom|collapseActionView" /></menu>

03 Step (DataAdapter a Java Class View) \app\src\main\java\com\example\app\DataAdapter.java

implements Filterableprivate ArrayList<Data_Constructor> mArrayList=new ArrayList<>();

04 Step (DataAdapter a Java Class View) \app\src\main\java\com\example\app\DataAdapter.java

///// Search in Recyclerview Or Filter Search   @Override   public Filter getFilter() {       return new Filter() {           @Override           protected FilterResults performFiltering(CharSequence charSequence) {               String charString = charSequence.toString();               if (charString.isEmpty()) {                   articles = Search_ArrayList;               } else {                   ArrayList<Data_Constructor> filteredList = new ArrayList<>();                   for (Data_Constructor CarItem : Search_ArrayList) {                       if (CarItem.getName().toLowerCase().contains(charString)) {                           filteredList.add(CarItem);                       }                   }                   articles = filteredList;               }               FilterResults filterResults = new FilterResults();               filterResults.values = articles;               return filterResults;           }           @Override           protected void publishResults(CharSequence charSequence, FilterResults filterResults) {               articles = (ArrayList<Data_Constructor>) filterResults.values;               notifyDataSetChanged();           }       };   }   ///// Search in Recyclerview Or Filter Search

05 Step (Call Activity for Search View Java Class) \app\src\main\java\com\example\app\MainActivity.java

////SearchView Start  @Override  public boolean onCreateOptionsMenu(Menu menu) {      getMenuInflater().inflate(R.menu.menu_main_se, menu);      MenuItem search = menu.findItem(R.id.action_search);      SearchView searchView = (SearchView) MenuItemCompat.getActionView(search);      search(searchView);      return true;  }  private void search(SearchView searchView) {      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {          @Override          public boolean onQueryTextSubmit(String query) {              return false;          }          @Override          public boolean onQueryTextChange(String newText) {              if (dataAdapter!=null)                  dataAdapter.getFilter().filter(newText);              return true;          }      });  }  //// SearchView parse Json File Data Website Call

01 Step ( Create Drawable Icon) \app\src\main\res\drawable\example_menu.xml

<vector android:height="24dp" android:tint="#FFFFFF"    android:viewportHeight="24" android:viewportWidth="24"    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">    <path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/></vector>

02 Step (Create an Menu View )\app\src\main\res\menu\menu_main_se.xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto">    <item        android:id="@+id/action_search"        android:icon="@drawable/example_menu"        android:title="Search"        app:actionViewClass="android.widget.SearchView"        app:showAsAction="ifRoom|collapseActionView" /></menu>

03 Step (Create a Java Class View ) \app\src\main\java\com\example\app\Adapter_itechbangla.java

private List<Data_list_calass_leItem> exampleList;private List<Data_list_calass_leItem> exampleListFull;

 

Adapter_itechbangla(List<Data_list_calass_leItem> exampleList) {      this.exampleList = exampleList;      exampleListFull = new ArrayList<>(exampleList);  }

 

@Override    public Filter getFilter() {        return exampleFilter;    }    private Filter exampleFilter = new Filter() {        @Override        protected FilterResults performFiltering(CharSequence constraint) {            List<Data_list_calass_leItem> filteredList = new ArrayList<>();            if (constraint == null || constraint.length() == 0) {                filteredList.addAll(exampleListFull);            } else {                String filterPattern = constraint.toString().toLowerCase().trim();                for (Data_list_calass_leItem item : exampleListFull) {                    if (item.getText2().toLowerCase().contains(filterPattern)) {                        filteredList.add(item);                    }                }            }            FilterResults results = new FilterResults();            results.values = filteredList;            return results;        }        @Override        protected void publishResults(CharSequence constraint, FilterResults results) {            exampleList.clear();            exampleList.addAll((List) results.values);            notifyDataSetChanged();        }    };

 

 

একটি মন্তব্য পোস্ট করুন

নবীনতর পূর্বতন