Last active
October 16, 2016 08:54
-
-
Save fnk0/87d2f52d76816d72781a54c9ddfe8a3d to your computer and use it in GitHub Desktop.
MovieDetailsFragment bind details v1
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 { | |
| ... | |
| 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