RottenTomatoes BoxOffice Demo
This is an Android demo application for displaying the latest box office movies using the RottenTomatoes API. See the RottenTomatoes Networking Tutorial on our cliffnotes for a step-by-step tutorial.
Installation
Quick note is that you must provide your own API key for RottenTomatoes in order to use this demo. To get an API key, you need to register for an account (or sign in). Once you have the key, put the key into the API_KEY
constant in the src/com/codepath/example/rottentomatoes/RottenTomatoesClient.java
file:
public class RottenTomatoesClient {
private final String API_KEY = "ENTER-KEY-HERE";
// ...
}
Once you've setup the key and imported the project into Eclipse, you should be all set.
Overview
The app does the following:
- Fetch the box office movies from the Box Office Movie API in JSON format
- Deserialize the JSON data for each of the movies into
BoxOfficeMovie
objects - Build an array of
BoxOfficeMovie
objects and create anArrayAdapter
for those movies - Define
getView
to define how to inflate a layout for each movie row and display each movie's data. - Attach the adapter for the movies to a ListView to display the data on screen
To achieve this, there are four different components in this app:
RottenTomatoesClient
- Responsible for executing the API requests and retrieving the JSONBoxOfficeMovie
- Model object responsible for encapsulating the attributes for each individual movieBoxOfficeMoviesAdapter
- Responsible for mapping eachBoxOfficeMovie
to a particular view layoutBoxOfficeActivity
- Responsible for fetching and deserializing the data and configuring the adapter
The app leverages the Box Office Movies API which returns the following JSON response:
{
"movies": [{
"id": "770687943",
"title": "Harry Potter and the Deathly Hallows - Part 2",
"year": 2011,
"mpaa_rating": "PG-13",
"runtime": 130,
"critics_consensus": "Thrilling, powerfully acted, and visually dazzling...",
"release_dates": {"theater": "2011-07-15"},
"ratings": {
"critics_rating": "Certified Fresh",
"critics_score": 97,
"audience_rating": "Upright",
"audience_score": 93
},
"synopsis": "Harry Potter and the Deathly Hallows, is the final adventure...",
"posters": {
"thumbnail": "http://content8.flixster.com/movie/11/15/86/11158674_mob.jpg",
"profile": "http://content8.flixster.com/movie/11/15/86/11158674_pro.jpg",
"detailed": "http://content8.flixster.com/movie/11/15/86/11158674_det.jpg",
"original": "http://content8.flixster.com/movie/11/15/86/11158674_ori.jpg"
},
"abridged_cast": [
{
"name": "Daniel Radcliffe",
"characters": ["Harry Potter"]
},
{
"name": "Rupert Grint",
"characters": [
"Ron Weasley",
"Ron Wesley"
]
}
]
},
{
"id": "770687943",
...
}]
}
See the RottenTomatoes Networking Tutorial on our cliffnotes for a step-by-step tutorial.
Libraries
This app leverages two third-party libraries:
- Android AsyncHTTPClient - For asynchronous network requests
- Picasso - For remote image loading