A modular, viewholderless adapter for Android RecyclerView with built-in diffing, paging, emptiness, selection, and event hooks.
OneAdapter is a library for Android that simplifies RecyclerView adapter creation by eliminating the need to write ViewHolders and boilerplate adapter code. It provides a modular system with built-in diffing, paging, empty states, selection, and event handling, allowing developers to define list behavior declaratively. The library handles performance optimizations like background diffing automatically.
Android developers building complex, interactive lists with RecyclerView who want to reduce boilerplate and avoid common adapter pitfalls. It's especially useful for teams adopting Kotlin and looking for a modern, declarative approach to list management.
Developers choose OneAdapter for its modular, viewholderless architecture that drastically reduces adapter code while providing powerful out-of-the-box features like diffing, paging, and selection. Its Kotlin-first DSL and performance optimizations make it a robust alternative to writing custom RecyclerView adapters.
A Viewholderless Adapter for RecyclerView, who supports builtin diffing, states (paging, empty...), events (clicking, swiping...), and more.
ItemModules enable reusable, testable components for different view types, reducing adapter boilerplate and improving code maintainability, as demonstrated in the example with separate modules for messages and stories.
Automatic DiffUtil on a background thread ensures efficient list updates without manual implementation, requiring only the Diffable interface for models to handle content comparisons.
Includes out-of-the-box modules for paging, emptiness, selection, and event hooks, providing solutions for common RecyclerView challenges like load-more indicators and swipe gestures.
Dedicated DSLs for configuration make the API declarative and concise, enhancing developer experience in Kotlin projects, as seen in the new version 2.0.0 API changes.
The README explicitly warns that library interfaces may change as it matures, leading to potential migration efforts and instability, especially noted during the ownership transition.
Heavy reliance on Kotlin DSLs makes the library less accessible for Java-only projects, requiring Kotlin adoption or less intuitive workarounds, despite some Java support.
The modular approach introduces concepts like modules, hooks, and states, which can be overwhelming for simple use cases compared to standard RecyclerView adapters.
A declarative framework for building efficient UIs on Android.
An implementation of tap targets from the Material Design guidelines for feature discovery.
An Android staggered grid view which supports multiple columns with rows of varying sizes.
Android Library to build a UI Card
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.