Introduction
BaseRecyclerViewAdapterHelper (commonly known as BRVAH) is the most popular RecyclerView adapter library in the Android ecosystem. It eliminates repetitive adapter boilerplate by providing a base adapter class with built-in support for headers, footers, empty views, multiple item types, click listeners, animations, drag-and-drop reordering, and expandable sections.
What BRVAH Does
- Simplifies RecyclerView adapter creation by reducing boilerplate to a single bind method
- Provides built-in header, footer, and empty-state view management without manual view-type handling
- Supports multiple item view types through a clean delegate-based registration API
- Includes item click and long-click listeners without requiring manual OnClickListener setup
- Offers drag-and-drop reordering and swipe-to-dismiss with minimal configuration
Architecture Overview
BRVAH extends RecyclerView.Adapter and manages view types internally through a module system. The core BaseQuickAdapter handles item binding, while optional modules add functionality like animation, load-more pagination, expandable tree structures, and draggable items. Version 4 uses Kotlin and a delegate pattern for multi-type adapters, replacing the older entity-based approach.
Setup & Configuration
- Add the BRVAH dependency from Maven Central to your module-level Gradle file
- Extend BaseQuickAdapter and implement onCreateViewHolder and onBindViewHolder
- Register item click and child-view click listeners via the adapter API
- Add header or footer views by calling addHeaderView or addFooterView on the adapter
- Enable load-more by attaching a QuickAdapterHelper with a TrailingLoadStateAdapter
Key Features
- Drastically reduces adapter code compared to writing raw RecyclerView.Adapter subclasses
- Multi-type item support through addDelegate registration without manual getItemViewType logic
- Built-in item animation module with fade-in, slide-in, and scale-in presets
- Expandable and collapsible tree-structure support for hierarchical list data
- DiffUtil integration for efficient data updates with automatic animations
Comparison with Similar Tools
- Epoxy by Airbnb — annotation-driven adapter framework with more ceremony; BRVAH is lighter and quicker to set up
- Groupie — similar goal of simplifying adapters; BRVAH has a broader feature set and larger community
- FastAdapter — feature-rich adapter library; BRVAH offers a simpler API for common use cases
- ConcatAdapter — Jetpack utility for merging adapters; BRVAH handles headers, footers, and load-more internally
- Compose LazyColumn — Compose-native list; BRVAH targets View-based RecyclerView projects
FAQ
Q: Does BRVAH 4 support Java? A: BRVAH 4 is written in Kotlin but is fully callable from Java projects.
Q: How do I handle pagination with load-more? A: Attach a TrailingLoadStateAdapter via QuickAdapterHelper and update its state to Loading, NotLoading, or Error based on your data source response.
Q: Can I use it with ListAdapter and DiffUtil? A: Yes. BRVAH 4 integrates with DiffUtil for efficient item-level updates and animations.
Q: What is the minimum supported Android version? A: BRVAH 4 requires API 21 (Android 5.0) and above.