Skip to content

erikjhordan-rey/Movies-PagingLibrary-Arch-Components

Repository files navigation

Paging Library - Architecture Components

Sample created to practice Paging Library.

What Have I learned?

  • Paging Library: The Paging Library makes it easier for you to load data on demand within your app's RecyclerView.

  • PagedList: Collection that loads data in pages, asynchronously. A PagedList can be used to load data from sources you define, and present it easily in your UI with a RecyclerView.

  • DataSource and DataSource.Factory: DataSource is the base class for loading snapshots of data into a PagedList. A DataSource.Factory is used to create a DataSource.

  • PageKeyedDataSource: DataSource used to load embed next/previous keys.

  • ItemKeyedDataSource: DataSource used to retrieve data from item N to fetch item N+1

  • PositionalDataSource: if you need to fetch pages of data from any location you choose.

  • LivePagedListBuilder: Class used to build a LiveData based on DataSource.Factory and a PagedList.Config.

  • RxPagedListBuilder: Class used to build a Observable based on DataSource.Factory and a PagedList.Config.

  • BoundaryCallback: Helper callback to signals when a PagedList has reached the end of available data.

  • PagedListAdapter: RecyclerView.Adapter that presents paged data from PagedLists in a RecyclerView. PagedListAdapter listens to PagedList loading callbacks as pages are loaded, and uses DiffUtil to compute fine grained updates as new PagedLists are received.

Demo

| | |

Resources to start with Paging Library on Android

Do you want to contribute?

Feel free to report or add any useful feature, I will be glad to improve it with your help.

Developed By

License

Copyright 2018 Erik Jhordan Rey

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.