Menu toggle
latest: v0.5.0 GitHub


Elements is collection of modular elements for RecyclerView lists, alternative to Google’s Paging library, designed in Kotlin with separation of concerns, modularity and testability in mind.

  • Separation of concerns: we split the model component into Sources, and the UI component into Presenters. [docs]
  • Simplicity: No need to extend Adapters, ViewHolders or all that Paging lib. boilerplate.
  • Reusability: as a result, each Source and Presenter is an independent piece of code that can be reused.
  • Modularity: let the adapter accept multiple Sources and Presenters. [docs]
  • Testability: a consequence of the above, each component can be independently tested.
  • Coordination: let Sources declare dependencies among them, in a CoordinatorLayout.Behavior fashion. [docs]
  • Paging: built-in concept of Page. [docs]
  • Integration with Arch components: heavy use of LiveData and Lifecycles, extensions for data binding.
  • Animations: give Presenterss fine grained control over how to animate each item [docs]

Get started

Get started with install info or start reading the in-depth documentation.

If you are curious about how Elements works in practice, take a look at the demo app in the app directory in GitHub.


If you like the project, use it with profit, and want to thank back, please consider donating or becoming a sponsor.