Skip to content

Instantly share code, notes, and snippets.

@fnk0
Last active October 16, 2016 08:54
Show Gist options
  • Select an option

  • Save fnk0/87d2f52d76816d72781a54c9ddfe8a3d to your computer and use it in GitHub Desktop.

Select an option

Save fnk0/87d2f52d76816d72781a54c9ddfe8a3d to your computer and use it in GitHub Desktop.
MovieDetailsFragment bind details v1
public class MovieDetailsFragment extends DetailsFragment {
...
private void setUpAdapter() {
// Create the FullWidthPresenter
mFullWidthMovieDetailsPresenter = new FullWidthDetailsOverviewRowPresenter(new MovieDetailsDescriptionPresenter(),
new DetailsOverviewLogoPresenter());
// Handle the transition, the Helper is mainly used because the ActivityTransition is being passed from
// The Activity into the Fragment
FullWidthDetailsOverviewSharedElementHelper helper = new FullWidthDetailsOverviewSharedElementHelper();
helper.setSharedElementEnterTransition(getActivity(), TRANSITION_NAME); // the transition name is important
mFullWidthMovieDetailsPresenter.setListener(helper); // Attach the listener
// Define if this element is participating in the transition or not
mFullWidthMovieDetailsPresenter.setParticipatingEntranceTransition(false);
// Class presenter selector allows the Adapter to render Rows and the details
// It can be used in any of the Adapters by the Leanback library
ClassPresenterSelector classPresenterSelector = new ClassPresenterSelector();
classPresenterSelector.addClassPresenter(DetailsOverviewRow.class, mFullWidthMovieDetailsPresenter);
classPresenterSelector.addClassPresenter(ListRow.class, new ListRowPresenter());
mAdapter = new ArrayObjectAdapter(classPresenterSelector);
// Sets the adapter to the fragment
setAdapter(mAdapter);
}
...
private void setUpDetailsOverviewRow() {
mDetailsOverviewRow = new DetailsOverviewRow(new MovieDetails());
mAdapter.add(mDetailsOverviewRow);
loadImage(HttpClientModule.POSTER_URL + movie.getPosterPath());
fetchMovieDetails();
}
...
private void bindMovieDetails(MovieDetails movieDetails) {
this.movieDetails = movieDetails;
// Bind the details to the row
mDetailsOverviewRow.setItem(this.movieDetails);
}
private SimpleTarget<GlideDrawable> mGlideDrawableSimpleTarget = new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
mDetailsOverviewRow.setImageDrawable(resource);
}
};
/**
* Loads the poster image into the DetailsOverviewRow
* @param url
* The poster URL
*/
private void loadImage(String url) {
Glide.with(getActivity())
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(mGlideDrawableSimpleTarget);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment