/PagingRoom

Demonstrates various ways of using Paging library with Room (LiveData, RxJava, custom datasource)

Primary LanguageKotlinApache License 2.0Apache-2.0

Paging Library Architecture Component Demo

Build Status Android Weekly

Companion article: Exploring Paging Library from Jetpack

This project contains a sample of using the Paging Library Architecture Component by way of a simple Notes app--no domain knowledge needed to understand the purpose of this app.

Libraries

App Design

The app follows Clean Architecture Principles to make it cleaner, more readable and maintainable.

  • Separate layers: Data, Domain, Presentation and UI
  • MVVM architecture for clean separation between UI and Presentation and below
  • Repository pattern
  • Mapping model between data and domain (NoteEntity and Note)

Branches

  1. master -- common setup with no paging used
  2. room-livedata -- paging using LiveData and default DataSource
  3. room-rxjava -- paging using RxJava and default DataSource
  4. room-livedata-custom-datasource -- paging using LiveData and custom ItemKeyedDataSource
  5. room-livedata-custom-datasource-koin -- paging using LiveData and custom ItemKeyedDataSource with Koin

License

Copyright 2018 James Shvarts

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

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.