package com.battlelancer.seriesguide.ui.streams; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.view.View; import android.widget.AdapterView; import android.widget.ListAdapter; import com.battlelancer.seriesguide.adapters.MovieHistoryAdapter; import com.battlelancer.seriesguide.loaders.TraktMovieHistoryLoader; import com.battlelancer.seriesguide.ui.HistoryActivity; import com.battlelancer.seriesguide.ui.MovieDetailsActivity; import com.battlelancer.seriesguide.ui.MovieDetailsFragment; import com.uwetrottmann.trakt5.entities.HistoryEntry; /** * Displays a stream of movies the user has recently watched on trakt. */ public class UserMovieStreamFragment extends StreamFragment { private MovieHistoryAdapter mAdapter; @Override protected ListAdapter getListAdapter() { if (mAdapter == null) { mAdapter = new MovieHistoryAdapter(getActivity()); } return mAdapter; } @Override protected void initializeStream() { getLoaderManager().initLoader(HistoryActivity.MOVIES_LOADER_ID, null, mActivityLoaderCallbacks); } @Override protected void refreshStream() { getLoaderManager().restartLoader(HistoryActivity.MOVIES_LOADER_ID, null, mActivityLoaderCallbacks); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // do not respond if we get a header position by accident if (position < 0) { return; } HistoryEntry item = mAdapter.getItem(position); if (item == null) { return; } // display movie details if (item.movie == null || item.movie.ids == null) { return; } Intent i = new Intent(getActivity(), MovieDetailsActivity.class); i.putExtra(MovieDetailsFragment.InitBundle.TMDB_ID, item.movie.ids.tmdb); ActivityCompat.startActivity(getActivity(), i, ActivityOptionsCompat .makeScaleUpAnimation(view, 0, 0, view.getWidth(), view.getHeight()) .toBundle() ); } private LoaderManager.LoaderCallbacks<TraktMovieHistoryLoader.Result> mActivityLoaderCallbacks = new LoaderManager.LoaderCallbacks<TraktMovieHistoryLoader.Result>() { @Override public Loader<TraktMovieHistoryLoader.Result> onCreateLoader(int id, Bundle args) { showProgressBar(true); return new TraktMovieHistoryLoader(getActivity()); } @Override public void onLoadFinished(Loader<TraktMovieHistoryLoader.Result> loader, TraktMovieHistoryLoader.Result data) { if (!isAdded()) { return; } mAdapter.setData(data.results); setEmptyMessage(data.emptyText); showProgressBar(false); } @Override public void onLoaderReset(Loader<TraktMovieHistoryLoader.Result> loader) { // keep current data } }; }