An open API service indexing awesome lists of open source software.

https://github.com/codepath/android-booksearch-exercise

Android app for searching books using the OpenLibrary api.
https://github.com/codepath/android-booksearch-exercise

Last synced: 3 months ago
JSON representation

Android app for searching books using the OpenLibrary api.

Awesome Lists containing this project

README

        

# Book Search App

Android app that leverages the [OpenLibrary API](https://openlibrary.org/developers/api) to search books and display cover images. This app is to be used as the base app for adding suggested extensions.

![Imgur](http://i.imgur.com/NJmF42Yl.png)

## Overview

The app does the following:

1. Fetch the books from the [OpenLibrary Search API](https://openlibrary.org/dev/docs/api/search) in JSON format
2. Deserialize the JSON data for each of the books into `Book` objects
3. Build an array of `Book` objects and notify the adapter to display the new data.
4. Define a view holder so the adapter can render each book model.

To achieve this, there are four different components in this app:

1. `BookClient` - Responsible for executing the API requests and retrieving the JSON
2. `Book` - Model object responsible for encapsulating the attributes for each individual book
3. `BookAdapter` - Responsible for mapping each `Book` to a particular view layout
4. `BookListActivity` - Responsible for fetching and deserializing the data and configuring the adapter

## Usage
This app is intended to be the base project on top of which new features can be added. To use it, clone the project and import it using the following steps:

![Imgur](http://i.imgur.com/joPKoTk.gif)

## Suggested Extensions

1. Use SearchView to search for books with a title
2. Show ProgressBar before each network request
3. Add a detail view to display more information about the selected book from the list
4. Use a share intent to recommend a book to friends

## Libraries

This app leverages two third-party libraries:

* [AsyncHttpClient](https://github.com/codepath/AsyncHttpClient) - For asynchronous network requests
* [Glide](https://github.com/bumptech/glide) - For remote image loading