Awesome Open Source
Awesome Open Source


ViewGroup backed by RecyclerView.Adapter, allowing for easy data set manipulation with non recycling views. Aka RecyclerView minus the recycling.

Build Status


allprojects {
    repositories {
        maven { url "" }

and within your application build.gradle

dependencies {
    implementation ''

and for FlowLayout support: Maven Central

dependencies {
    //add the latest of FlowLayout
    implementation ''
    implementation ''

and for Kotlin extensions support:

dependencies {
    implementation ''


See the sample project for full usage.

//CheeseAdapter is a RecyclerView adapter
CheeseAdapter cheeseAdapter = new CheeseAdapter();
adapterLinearLayout adapterLinearLayout = (AdapterLinearLayout) findViewById(;

Later, when you get your data set:

ArrayList<Cheese> cheeses = loadCheeses();
//addAll is a method in our custom RecyclerView.Adapter

At this point, the data will be added to the LinearLayout so long as your RecyclerView.Adapter works correctly. onCreateViewHolder and onBindViewHolder will be called as needed.

But... Why?

This library is useful for displaying data sets that are repeating, but do not need to be recycled as they would be in a RecyclerView. This could be the case if you wanted to display a list of items within a ScrollView, or wanted to use a custom ViewGroup that did not extend RecyclerView.

But Why RecyclerView Adapter?

Most developers should be using RecyclerView instead of ListView and should be familiar with creating a RecyclerView.Adapter. RecyclerView.Adapter also enforces the use of ViewHolders which is better for performance. RecyclerView's adapter also allows for better responses to data structure changes via notifyItemInserted, notifyItemRemoved etc.

Currently Created AdapterLayouts

  • AdapterLinearLayout
  • AdapterFlowLayout (separate dependency)

Creating Your Own AdapterLayout

It is simple to create your own ViewGroup backed by a RecyclerView.Adapter. See the AdapterFlowLayout library and AdapterLayoutDelegate in the library for an example of how to create one.


  • Within a RecyclerView.Adapter, you can call getAdapterPosition(). This will always return -1 since there is actually never an associated RecyclerView. Instead, you can call AdapterLayout.getAdapterPosition(holder) to get the position of the ViewHolder within the adapter.


Copyright 2018 Commit 451

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Kotlin (60,171
Android (41,221
Recyclerview (1,344
Adapter (603
Related Projects