Sectioned RecyclerView

Sectioned RecyclerView allows you to easily split a RecyclerView into sections with headers.

Screenshots


Gradle Dependency

jCenter Build Status License

The Gradle dependency is available via jCenter. jCenter is the default Maven repository used by Android Studio.

Dependency

Add this to your module’s build.gradle file:

dependencies {
    // ... other dependencies
    compile 'com.afollestad:sectioned-recyclerview:0.2.3'
}

Adapter

Here’s a basic example:

public class MainAdapter extends SectionedRecyclerViewAdapter<MainAdapter.MainVH> {

    @Override
    public int getSectionCount() {
        return 20; // number of sections.
    }

    @Override
    public int getItemCount(int section) {
        return 8; // number of items in section (section index is parameter).
    }

    @Override
    public void onBindHeaderViewHolder(MainVH holder, int section) {
        // Setup header view.
    }

    @Override
    public void onBindViewHolder(MainVH holder, int section, int relativePosition, int absolutePosition) {
        // Setup non-header view.
        // 'section' is section index.
        // 'relativePosition' is index in this section.
        // 'absolutePosition' is index out of all non-header items.
        // See sample project for a visual of how these indices work.
    }

    @Override
    public MainVH onCreateViewHolder(ViewGroup parent, int viewType) {
        // Change inflated layout based on 'header'. 
        View v = LayoutInflater.from(parent.getContext())
                .inflate(viewType == VIEW_TYPE_HEADER ? R.layout.header : R.layout.normal, parent, false);
        return new MainVH(v);
    }

    public static class MainVH extends RecyclerView.ViewHolder {

        public MainVH(View itemView) {
            super(itemView);
            // Setup view holder.
            // You'd want some views to be optional, e.g. for header vs. normal.
        }
    }
}

Layout Manager

If you’re using a LinearLayoutManager, you’re all set. If you’re using a GridLayoutManager, you need to tell the adapter:

GridLayoutManager manager = // ...
adapter.setLayoutManager(manager);

This is vital to getting headers to span all columns.

Related Repositories

sectioned-recyclerview

sectioned-recyclerview

Implement a multi-sectioned RecyclerView using a custom adapter interface. ...

SectionedExpandableGridRecyclerView

SectionedExpandableGridRecyclerView

The project in this repository is an attempt at a simple implementation of sectioned, expandable, grid RecyclerView ...

android-sectioned-adapter

android-sectioned-adapter

Android Section Adapter allows you to easily create a RecyclerView.Adapter which will automatically sort your data into sections and add a header above each section. ...

SectionedRecyclerAdapter

SectionedRecyclerAdapter

A simple adapter for Android's RecyclerView which supports sectioned views ...


Top Contributors

afollestad agatti pflammertsma d-fournier

Releases

-   0.2.3 zip tar
-   0.2.2 zip tar
-   0.2.1 zip tar
-   0.2.0 zip tar
-   0.1.0 zip tar