Android Header and Footer Tutorial

Android Header and Footer Tutorial

In this tutorial we are going to learn how to implement Header and Footer for ListView and RecyclerViewThe header is a View that displays before first item and footer displays after last item. Most of the apps you had seen who is having header and footer. Same thing we are going to implement in this tutorial.


  1. ListView
  2. RecyclerView
  3. Tab Bar Layout


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

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

3. Open strings.xml located under res=>values folder and add following strings.

4. Create new xml file naming colors.xml  under res=>values folder and add the following colors.

5. Create activity_main.xml and add the following code. In this i am using Tab Bar Layout for creating tabs.

6. Create listview_layout.xml for ListView fragment and add ListView to it.

7. Similarly create recyclerview_layout.xml for RecyclerView fragment and add RecyclerView to it.

8. Now we need to create custom row for both ListView and RecyclerView. So we can use same xml for both, so create new xml file naming list_item_row.xml.

9. Now come to and add the following code for adding tabs and fragments to it.

10. Create new class for ViewPager tab fragments.

11. Now, for Header and Footer View we need to create new layout naming header_footer_view.xml and you can put any design over here.

12. For adding Header and Footer to ListView is very simple because ListView provided us inbuilt method for adding Header and Footer View to it.

  • Header View: 
    Here, headerView is a View that you want to display as ListView Header.
  • Footer View:

Here, footerView is a View that you want to display as ListView Footer.

Note: The above method should be call before notifying adapter.

13. Create a and add the following code to it.

14. For ListView we need to create class to inflate custom rows.

15. For generating random color for row items, we need to create a class that randomly gives range of colors to set row color. For this create and add the following code to it.

16. Now, create and add the following code to it. In this code we are toggling between List and Grid type RecyclerView.

17. As you have seen in above point we are using Menu for toggling between List and Grid type RecyclerView. For this we need to create menu_mani.xml under menu directory.

18. Create class for RecyclerView item holder.

19. Create class for RecyclerView Header and Footer holder.

20. For setting Header and Footer in RecyclerView we need to follow some steps because RecyclerView doesn’t provide any methods to do this directly.

  1. Type of View
  2. Add +2 to Array Size because we are using 2 extra views for Header and Footer.
  3.  In getViewType return type of View according to position.
  4.  For Header View the postion should be 0.
  5. For Footer the position should be equals to last item of ArrayList.
  6. While Creating ViewHolder for Header and Footer Type we have to return same RecyclerView_HeaderFooter_Holder that we created in previous point and for Item Type we have to return DemoViewHolder.
  7. Now while BindingViewHolder we have to check the instance of ViewHolder and on the basis of instance we need to display the text and color. Since we are using same holder for both header and footer we need to check if position is equals to 0 then its Header and if position equals to arraySize then its footer.

Note: For getting item from ArrayList for Item Type we need to get it by arrayList.get(position-1) because last item is Footer.

21. Full code of

22. Finally, all done run your code.

Thanks. 🙂

Download Source Code


About the author

I am an Android developer for whom Android is the one and only love. I work as a freelancer which gets me and Android closer. I always love to share my learnings and love to learn from others knowledge too.


where did you add footer and header in RecyclerView. I think it should be inside ‘’, but couldn’t find in there..

    Hi Shadman,

    No the header and footer is in class.


Leave a Comment

Comment (required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Name (required)
Email (required)