The Paging Library helps you load and display pages of data from a larger dataset from local storage or over the network. This approach allows your app to use both network bandwidth and system resources more efficiently. In this example, I tried to implement pagination with room
LiveData - LiveData is an observable data holder class
Flow - Works very well with coroutines, provides us with cold streams which can be transformed using well known reactive operators.
ViewModel - The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way
Coroutines - For offloading long running tasks to background
Room - For storing our application data
Retrofit - For making API calls
Dagger Hilt - For dependency injection
Gradle Kotlin DSL - Gradle’s Kotlin DSL provides an alternative syntax to the traditional Groovy DSL with an enhanced editing experience in supported IDEs, with superior content assist, refactoring, documentation, and more
Databinding - To bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically
Paging - The Paging library helps you load and display pages of data from a larger dataset from local storage or over network