Skip to content

Instantly share code, notes, and snippets.

@fnk0
Last active October 16, 2016 07:58
Show Gist options
  • Save fnk0/fdfab379d35e63e09712e7ff45b1170d to your computer and use it in GitHub Desktop.
Save fnk0/fdfab379d35e63e09712e7ff45b1170d to your computer and use it in GitHub Desktop.
MovieDetailsFragment setup
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