This application is created to show how paging library can be used to load infinite lists and used in conjunction with Network fetch & Room Database.
- Android Architecture Components (Room Database, LiveData, Paging Library(PagedList, PagedListAdapter)).
- Application Architecture is MVVM.
- Networking using Retrofit 2.
- Used Kotlin.
- Used Kotlin Coroutines for Async Operations.
- Used Retrofit 2 Adapter for Kotlin Coroutine's Deferred type.
- Whole project is based on AndroidX.
- Used Dagger 2 for Dependency Injection.
- Picasso for Image handling.
- Request the GitHub API to show public repositories and parse the JSON response.
- Display a list of repositories, each entry shows
- full repo name
- description
- login of the owner
- forked or not
- repo owner's avatar image
- Requesting 15 repos at a time over the netwokr. Using an endless list with a load more mechanism. The load more is triggered when the scrolling is 5-items near to reaching the end of the list.
- Cache the repos in room database storage.
- Show a light green background if the
fork
flag is false or missing, a white one otherwise. - On a long click on a list item showing a bottom sheet to ask user if go to repository
html_url
or ownerhtml_url
which is then opened in the browser.
- Implement a mechanism to download and store the repos on a regular interval also if the app is closed.