package com.florianmski.tracktoid.ui.fragments.base.trakt; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import com.florianmski.tracktoid.R; import com.florianmski.tracktoid.adapters.RecyclerAdapter; import com.florianmski.tracktoid.adapters.lists.RecyclerTraktItemAdapter; import com.florianmski.tracktoid.data.TraktoidItem; import com.florianmski.tracktoid.data.WEpisode; import com.florianmski.tracktoid.data.WMovie; import com.florianmski.tracktoid.data.WShow; import com.florianmski.tracktoid.image.Type; import com.florianmski.tracktoid.ui.activities.EpisodeActivity; import com.florianmski.tracktoid.ui.activities.MovieActivity; import com.florianmski.tracktoid.ui.activities.ShowActivity; import com.florianmski.tracktoid.ui.fragments.base.list.ItemRecyclerViewFragment; import com.florianmski.tracktoid.ui.fragments.base.switcher.SwitchFragment; import java.util.List; public abstract class TraktItemsFragment<E extends TraktoidItem> extends ItemRecyclerViewFragment<E> implements RecyclerAdapter.OnItemClickListener { private RecyclerView.OnScrollListener recyclerScrollListener = new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); ((SwitchFragment)getParentFragment()).getFAB().reactToScroll(dy); } }; private boolean fabInParent = false; protected abstract Type getImageType(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fabInParent = getParentFragment() != null && getParentFragment() instanceof SwitchFragment; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if(fabInParent) addScrollListener(recyclerScrollListener); } @Override public void onDestroy() { super.onDestroy(); if(fabInParent) removeScrollListener(recyclerScrollListener); } @Override protected RecyclerView.LayoutManager getLayoutManager() { return new GridLayoutManager( getActivity(), getResources().getInteger(getImageType() == Type.POSTER ? R.integer.grid_poster_columns : R.integer.grid_fanart_columns)); } @Override protected RecyclerAdapter<E, ?> createAdapter(List<E> items) { return new RecyclerTraktItemAdapter<>(getActivity(), items, getTheme(), this) .imageType(getImageType()) .titleVisible(true); } @Override public void onItemClick(View v, int position) { E traktoidItem = getAdapter().getItem2(position); if(traktoidItem instanceof WShow) ShowActivity.launch(getActivity(), (WShow) traktoidItem); else if(traktoidItem instanceof WMovie) MovieActivity.launch(getActivity(), (WMovie) traktoidItem); else if(traktoidItem instanceof WEpisode) EpisodeActivity.launch(getActivity(), (WEpisode) traktoidItem); } }