What is RecyclerView?

RecyclerView helps you save time by not having to constantly observe the changes in your adapters. You can notify RecylerView of all updates at once, which makes it much easier for LayoutManager to animate and display changes on screen without unnecessary bindings happening during calculation.

It addresses two problems with ListViews by default style:

  • Animation performance when using large images
  • Allows more customization in terms of color and theme.

Layout manager for linear, grid, staggered and more complex layouts. It was introduced with Android 3.0 (API level 11) as part of the support library. Adding these to your app requires only a few lines of code, so they’re easy to add and remove at runtime.

The RecyclerView can also automatically animate all the views as they appear or disappear from the screen, including animations that change size and location of these views. This is huge because it means you can easily handle cases where your adapter might want to add or remove items at runtime (like a list of search results where new results are loaded as you scroll down).

Physical animation is very costly for Android’s hardware system, especially if using LayoutTransition , which can be inlined with Animated API when supported by device.

Android 7 adds support for Virtualization layout manager which keeps UI responsive even when your item count grows way beyond what fits on screen. It only creates views that become visible to user.

As a developer, I want to use RecyclerView over ListView because of its performance and support for Virtualization. The more data your app displays in lists or grids, the bigger that impact will be.

Problem with using RecyclerView is lack of features like ViewHolder to reuse views, AnimatorSet / ViewPropertyAnimator to animate changes when adding/removing item etc. So we need tools from third party libraries to overcome this issue.