Last active
October 16, 2016 07:58
-
-
Save fnk0/fdfab379d35e63e09712e7ff45b1170d to your computer and use it in GitHub Desktop.
MovieDetailsFragment setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MovieDetailsFragment extends DetailsFragment { | |
public static String TRANSITION_NAME = "poster_transition"; | |
// Injects the API using Dagger | |
@Inject | |
TheMovieDbAPI mDbAPI; | |
private Movie movie; | |
private MovieDetails movieDetails; | |
private ArrayObjectAdapter mAdapter; | |
/** | |
* Creates a new instance of a MovieDetailsFragment | |
* @param movie | |
* The movie to be used by this fragment | |
* @return | |
* A newly created instance of MovieDetailsFragment | |
*/ | |
public static MovieDetailsFragment newInstance(Movie movie) { | |
Bundle args = new Bundle(); | |
args.putParcelable(Movie.class.getSimpleName(), movie); | |
MovieDetailsFragment fragment = new MovieDetailsFragment(); | |
fragment.setArguments(args); | |
return fragment; | |
} | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
// Injects this into the main component. Necessary for Dagger 2 | |
App.instance().appComponent().inject(this); | |
if (getArguments() == null || !getArguments().containsKey(Movie.class.getSimpleName())) { | |
throw new RuntimeException("An movie is necessary for MovieDetailsFragment"); | |
} | |
// Retrieves the movie from the arguments | |
movie = getArguments().getParcelable(Movie.class.getSimpleName()); | |
setUpAdapter(); | |
setUpDetailsOverviewRow(); | |
} | |
/** | |
* Sets up the adapter for this Fragment | |
*/ | |
private void setUpAdapter() { | |
} | |
/** | |
* Sets up the details overview rows | |
*/ | |
private void setUpDetailsOverviewRow() { | |
} | |
/** | |
* Fetches the movie details for a specific Movie. | |
*/ | |
private void fetchMovieDetails() { | |
mDbAPI.getMovieDetails(movie.getId(), Config.API_KEY_URL) | |
.subscribeOn(Schedulers.io()) | |
.observeOn(AndroidSchedulers.mainThread()) | |
.subscribe(this::bindMovieDetails, e -> { | |
Timber.e(e, "Error fetching data: %s", e.getMessage()); | |
}); | |
} | |
private void bindMovieDetails(MovieDetails movieDetails) { | |
this.movieDetails = movieDetails; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment