Skip to main content

Top Android RecyclerView Libraries

The Features and Installation of Top Android RecyclerView Libraries

The RecyclerView is a versatile and powerful widget in Android that allows for efficient and flexible display of large sets of data. However, the default implementation of RecyclerView can be quite complex and time-consuming to set up. Luckily, there are several libraries available that provide additional features and simplify the usage of RecyclerView. In this tutorial, we will explore some of the top Android RecyclerView libraries, their features, installation process, and provide code examples where applicable.

1. Butterknife

Butterknife is a popular library developed by Jake Wharton that simplifies the process of binding Android views to fields and methods. While it is not specifically a RecyclerView library, it can greatly simplify the process of binding views within RecyclerView adapters.

Features

  • View binding: Butterknife generates boilerplate code to bind views to fields, reducing the need for findViewById() calls.
  • Event binding: Butterknife allows for easy binding of view events to methods, reducing the need for anonymous inner classes.
  • ButterKnife supports both Java and Kotlin.

Installation

To use Butterknife in your project, follow these steps:

  1. Add the Butterknife dependency to your app-level build.gradle file:
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
  1. Apply the Butterknife plugin in your project-level build.gradle file:
apply plugin: 'kotlin-kapt' // for Kotlin
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'

Usage Example

Here's an example of how to use Butterknife in a RecyclerView adapter:

class MyAdapter(private val items: List<String>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
@BindView(R.id.item_text)
lateinit var itemText: TextView

init {
ButterKnife.bind(this, itemView)
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemText.text = items[position]
}

override fun getItemCount(): Int {
return items.size
}
}

2. Epoxy

Epoxy is a library developed by Airbnb that simplifies the creation of complex RecyclerView layouts. It provides a declarative API for building RecyclerViews, making it easier to handle different view types and data binding.

Features

  • Simplified RecyclerView setup: Epoxy eliminates the need for writing traditional RecyclerView adapters by providing a more intuitive and declarative approach.
  • Automatic diffing and updates: Epoxy automatically handles diffing and updating the RecyclerView when the underlying data changes, improving performance.
  • View types and models: Epoxy allows for easy handling of multiple view types and models within a single RecyclerView.

Installation

To use Epoxy in your project, follow these steps:

  1. Add the Epoxy dependency to your app-level build.gradle file:
implementation 'com.airbnb.android:epoxy:4.4.0'
kapt 'com.airbnb.android:epoxy-processor:4.4.0'
  1. Apply the Epoxy plugin in your project-level build.gradle file:
apply plugin: 'kotlin-kapt' // for Kotlin
apply plugin: 'com.android.application'
apply plugin: 'com.airbnb.epoxy'

Usage Example

Here's an example of how to use Epoxy to create a simple RecyclerView:

class MyEpoxyAdapter : EpoxyController() {

private val items = listOf("Item 1", "Item 2", "Item 3")

override fun buildModels() {
items.forEachIndexed { index, item ->
MyItemModel_()
.id(index)
.title(item)
.addTo(this)
}
}
}

@EpoxyModelClass(layout = R.layout.item_layout)
abstract class MyItemModel : EpoxyModelWithHolder<MyItemModel.ViewHolder>() {

@EpoxyAttribute
lateinit var title: String

override fun bind(holder: ViewHolder) {
holder.itemText.text = title
}

class ViewHolder : EpoxyHolder() {
lateinit var itemText: TextView

override fun bindView(itemView: View) {
itemText = itemView.findViewById(R.id.item_text)
}
}
}

Additional Libraries

Here are some additional RecyclerView libraries that you might find useful:

  • Groupie: A simple and flexible library for complex RecyclerView layouts. Github

  • FastAdapter: A fast and efficient RecyclerView library with support for multiple view types. Github

  • SuperRecyclerView: An enhanced RecyclerView with additional features like swipe gestures and endless scrolling. Github

  • recyclerview-animators - An Android Animation library which easily add itemanimator to RecyclerView items..

  • RecyclerViewItemAnimators - An Android library which provides simple Item animations to RecyclerView items.

  • MultiSnapRecyclerView - Android library for multiple snapping of RecyclerView.

  • RecyclerView-FlexibleDivider - Android library providing simple way to control divider items (ItemDecoration) of RecyclerView.

  • android-advancedrecyclerview - RecyclerView extension library which provides advanced features. (ex. Google's Inbox app like swiping, Play Music app like drag and drop sorting).

  • recyclerview-stickyheaders - DEPRECATED. Android library that integrate sticky section headers in your RecyclerView.

  • RecyclerViewEnhanced - Android Library to provide swipe, click and other functionality to RecyclerView.

  • recyclerviewhelper - 📃 [Android Library] Giving powers to RecyclerView .

  • epoxy - Epoxy is an Android library for building complex screens in a RecyclerView.

  • AlphabetIndex-Fast-Scroll-RecyclerView - A Powerful AlphabetIndex FastScroller Library for Android's RecyclerView! .

  • RecyclerViewExtensions - A library focused on making the use of RecyclerView for Android easier.

  • CarouselView - An android carousel library for RecyclerView.

  • RecyclerView-MultipleViewTypesAdapter - Android library defining adapter classes of RecyclerView to manage multiple view types.

  • DragDropSwipeRecyclerview - Kotlin Android library that extends RecyclerView to support gestures like drag & drop and swipe, among others. It works with vertical, horizontal and grid lists..

  • Android-CardView-RecyclerView - Let's play with Android CardView, RecyclerView, Retrofit and Picasso Library. You can read details procedure about those library in my Bengali blog site. .

  • AdvancedRecyclerView - An easy, empowering Kotlin library for RecyclerView.

  • Android-PullToRefreshRecyclerView - A RecyclerView library for Android which support pull-to-refresh ,auto-load-more and add header..

  • Yasha - A DSL library for rendering RecyclerView and ViewPager..

  • AutoplayVideos - Android library to auto-play/pause videos from url in recyclerview..

  • Graywater - An Android library for decomposing RecyclerView layouts to improve scroll performance..

  • IndicatorFastScroll - Android library providing a simple UI control for scrolling through RecyclerViews.

  • recyclerview-binder - Android library for RecyclerView to manage order of items and multiple view types..

  • sticky-layoutmanager - An android recyclerview sticky item view layout manager library.

  • Sectioned-RecyclerView - Simple Android library that allows you to easily split your RecyclerView into expanding/collapsing sections with headers..

  • RecyclerExt - Android RecyclerView Extension library.

  • FlexibleAdapter - Fast and versatile Adapter for RecyclerView which regroups several features into one library to considerably improve the user experience :-).

  • Renderers - Renderers is an Android library created to avoid all the boilerplate needed to use a RecyclerView/ListView with adapters..

  • Dividers - Dividers is a simple Android library to create easy separators for your RecyclerViews.

  • NoPaginate - Android pagination library (updated 01.05.2018).

  • recycler-view-margin-decoration - A library for add margin each item in RecyclerView..

  • SnappySmoothScroller - An Android library that enables snappy smooth scrolling in RecyclerView..

  • recycler-view-divider - A library which configures a divider for a RecyclerView..

  • SSForms - SSForms is Android library to create dynamic Recyclerview forms.

  • Decorator - Decorator is an Android library that helps creating composable margins and dividers in RecyclerViews.

  • RecyclerViewPresenter - RecyclerView Adapter Library with different models and different layouts as convenient as possible..

  • MaterialScrollBar - An Android library that brings the Material Design 5.1 sidebar to pre-5.1 devices..

  • Android-Extensions - An Android library with modules to quickly bootstrap an Android application..

  • RecyclerItemDecoration - An Android ItemDecorations library which easily add ItemDecoration to RecyclerView items. Currently Contains PinnedHeaderItemDecoration, DividerItemDecoration, OffsetsItemDecoration, ShaderItemDecoration.

  • Android-Architecture-Components - The template project that uses Android Architecture Components with Repository pattern. The simple app that uses awesome Fuel library instead of Retrofit for perfoming HTTP request. The app also persists data using the Room library and display data in RecyclerView..

  • AutoPlayVideoRecyclerView - Android library to auto play video from url in Recyclerview..

  • MjolnirRecyclerView - [DEPRECATED] This library is no longer maintained and it will not receive any more updates..

  • HeaderRecyclerView - HeaderRecyclerView is an Android library created to be able to use RecyclerView.Adapter with a header in a easy way. To use this library create your RecyclerView.Adapter classes extending from HeaderRecyclerViewAdapter..

  • ImageZoom - An Android library that makes any view to be zoomable..

  • Covert - Covert is an Android library for Material Swipe Actions within a RecyclerView.

  • InifiniteRecyclerView - Library for implementing endless loading list easily in Android applications.

  • Antonio - Android library for the adapter view (RecyclerView, ViewPager, ViewPager2).

  • RecyclerCalendarAndroid - A simple DIY library to generate your own custom Calendar View using RecyclerView, written in Kotlin .

  • blueprint - Blueprint is a compact framework for constructing mvp architecture within a scrollable, multi-view-type list UI. It uses the Android RecyclerView library, and currently only supports LinearLayouts.

  • FeatureAdapter - FeatureAdapter (FA) is an Android Library providing an optimized way to display complex screens on Android..

  • Rebound-RecyclerView-Android - Unofficial library based on Facebook's rebound library for Android RecyclerView..

  • RecyclerViewDSL - RecyclerViewDSL is a DSL Library for Android RecyclerView.

  • recyclerview-selection-demo - A simple Android project that demonstrates the usage of the androidx.recyclerview.selection support library.

  • TableView - TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells..

  • Pagination_Recyclerview_Android_Kotlin - Pagination Recyclerview Android Kotlin We use the Pagination Library of Android Jetpack in this app to fetch data from the database to recyclerView by retrofit API, This code is following the principles MVVM design pattern and LiveData..

  • klaster - Declare RecyclerView adapters in a functional way, without boilerplate and subclassing. No compromises on flexibility. If it's possible to do something by subclassing, it's possible to do it with this library. .

  • ARVI - Android library designed to simplify the implementation of the video autoplay in the RecyclerView.

  • SwipeToAction - WARNING: This library is no longer maintained An easy way to add a simple 'swipe-and-do-something' behavior to your RecyclerView items. Just like in Gmail or Inbox apps..

  • google-books-android-viewer - Android library to bridge between RecyclerView and sources like web page or database. Includes demonstrator (Google Books viewer).

  • PlaceHolderView - This library provides advance views for lists and stacks. Some of the views are build on top of RecyclerView and others are written in their own. Annotations are compiled by annotation processor to generate bind classes. DOCS -->.

  • android-paging-library-sample - A sample application to describe a new way of paging in recyclerView using paging library. .

  • FastAdapter - The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction....

  • SuperRecyclerView - Super RecyclerView Android Library.

  • scrollme-android - An Android library automatically adds scroll up button to RecyclerView .

  • SingleRowCalendar - Android library for horizontal single row calendar. With this library, you aren't attached to library built-in UI. You can create really beautiful and customizable UI and use selection features without hands getting dirty with RecyclerView and SelectionTracker..

  • FirebaseRecyclerPagination - [DEPRECATED] Android Library to implement Paging support for Realtime Database in RecyclerView..

  • Swipeable-RecyclerView - Android library provides a simple to use swipeable RecyclerView..

  • EasyAdapter - Recyclerview adapter library- Create adapter in just 3 lines of code.

  • TimelineView - A customizable and easy-to-use Timeline View library for Android. Works as a RecyclerView decorator (ItemDecoration).

  • rv-joiner - Android RecyclerView Joiner Library allows you to join several RecyclerView adapters and layouts into single RecyclerView adapter. Optionally, joined layouts can be used to add header, footer and devider to your RecyclerView..

  • Pluto - Pluto is an Easy, lightweight and high performance slider view library for Android. You have the flexibility to customize it to any view since it based RecyclerView..

  • OneItem - Simple implementation for one item selected RecyclerView. This makes it easier to use arbitrary VideoView (such as MediaPlayer) in RecyclerView. This library includes RecyclerView.LayoutManager and Recyclerview.OnScrollListener..

  • VideoPlayerManager - This is a project designed to help controlling Android MediaPlayer class. It makes it easier to use MediaPlayer ListView and RecyclerView. Also it tracks the most visible item in scrolling list. When new item in the list become the most visible, this library gives an API to track it..

  • EasyRecycler - Library to use Recycler View easily. .

  • Lego - Lego is an elegant Android library for implement powerful RecyclerView's Adapter..

  • MyDynamicRecyclerviewExample - This is an Android Library for developer to use customized recyclerview with many features, like easy use Empty view, Refresh view, Floating Action Button, Load more. So all these features contain in one recyclerview..

  • easy-header-footer-adapter - An Android library which adds headers and footers to the RecyclerView..

  • frogo-admob - Library Helper For Implementation All Admob Function.

  • HorizontalRecyclerview - Android application to display horizontal recyclerview with glide library for image display using Kotlin Programming Language..

  • TimelineView - Android Timeline View Library (Using RecyclerView) is simple implementation used to display view like Tracking of shipment/order, steppers etc..

  • SimplifiedRecyclerview - An android library to help you get rid of boiler plate code when setting up Recyclerview.

  • Easy-RecyclerView-Library - An awesome library for the Android to make Simple RecyclerView and Multi Layout RecyclerView.

  • RecyclerELE - Android Library for easy addition of Empty, Loading and Error views in a RecyclerView.

  • CollageImageView - Organize your images in beautiful collage with this library! .

  • SectionedRecyclerView - This project is for creating Sectioned Recyclerview in Android without any external sdk or library. .

Feel free to explore these libraries based on your specific requirements.

In conclusion, these top Android RecyclerView libraries provide additional features and simplify the usage of RecyclerView, making it easier and more efficient to work with large data sets. By leveraging these libraries, you can enhance the functionality and performance of your RecyclerView-based UIs.