Android Adding Search Functionality to List - Androhub

Filterable List Banner

Android Adding Search Functionality to List

Today we are going to learn how to add search functionality to ListView, GridView and RecyclerView. In this tutorial you can filter search list by multiple items.

Prerequisite:

  1. Material Tabs Tutorial
  2. ListView Tutorial
  3. GridView Tutorial
  4. RecyclerView Tutorial
  5. Radio Button Tutorial

VIDEO DEMO

1. Create a new project in Android Studio by navigating to File ⇒ New ⇒ New Project and fill required details. By default my activity is MainActivity.java.

2. Open build.gradle and include this libraries show below:

3. Now create 3 material tabs naming ListView, GridView and RecyclerView. For this you can check this link for reference.

4. After creating tabs lets move to creating xml layouts for individual tabs.

  • list_view_frament.xml

  • grid_view_fragment.xml

  • recycler_view_fragment.xml

5. In all the above xml layouts i am using one common layout i.e. top_container.xml. Lets create the common layout xml, this layout contains some radio buttons for custom filter.

6. Now create custom background for Search EditText naming search_bg.xml.

7. Now lets create java classes for all the above three xml files.

  • ListViewFragment.java

  • GridViewFragment.java

  • RecyclerViewFragment.java

In all the above fragment classes the common code to do filtering is:

Here we need to call the filter method created in adapter class by passing the filter query.

8. Now after creating all fragment classes we have to create Adapters for ListView, GridView and RecyclerView.

  • GridListAdapter.java

  • RecyclerViewAdapter.java

In both the above adapter the common code to filter is:

9. Some helper java classes that we need in this article are:

  • UserModel.java 

  • GetUserModelData.java 

  • FilterType.java

10. Finally all things done. Now you can also make filterable ListView.

Thanks. 🙂

 

1 Comment

Putri Ananta Natasha
Wednesday, December 23rd, 2020

Waw, its work
thanks

Post comment

Your email address will not be published. Required fields are marked *