package com.sregg.android.tv.spotifyPlayer.fragments; import android.os.Bundle; import android.support.v17.leanback.app.VerticalGridFragment; import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.OnItemViewClickedListener; import android.support.v17.leanback.widget.Presenter; import android.support.v17.leanback.widget.Row; import android.support.v17.leanback.widget.RowPresenter; import android.support.v17.leanback.widget.VerticalGridPresenter; import android.util.Log; import com.sregg.android.tv.spotifyPlayer.BusProvider; import com.sregg.android.tv.spotifyPlayer.SpotifyTvApplication; import com.sregg.android.tv.spotifyPlayer.activities.CategoryActivity; import com.sregg.android.tv.spotifyPlayer.presenters.PlaylistSimpleCardPresenter; import java.util.HashMap; import java.util.Map; import kaaes.spotify.webapi.android.SpotifyService; import kaaes.spotify.webapi.android.models.PlaylistsPager; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; public class CategoryFragment extends VerticalGridFragment { private static final String TAG = CategoryFragment.class.getSimpleName(); private static final int NUM_COLUMNS = 5; private ArrayObjectAdapter mAdapter; @Override public void onActivityCreated(Bundle savedInstanceState) { Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); setTitle(getActivity().getIntent().getStringExtra(CategoryActivity.ARG_CATEGORY_NAME)); setupFragment(); loadCategory(getActivity().getIntent().getStringExtra(CategoryActivity.ARG_CATEGORY_ID)); } private void setupFragment() { mAdapter = new ArrayObjectAdapter(new PlaylistSimpleCardPresenter()); setAdapter(mAdapter); setOnItemViewClickedListener(new OnItemViewClickedListener() { @Override public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { SpotifyTvApplication.getInstance().launchDetailScreen(getActivity(), item); } }); } private void loadCategory(String categoryId) { Map<String, Object> options = new HashMap<>(); options.put(SpotifyService.COUNTRY, SpotifyTvApplication.getCurrentUserCountry()); SpotifyTvApplication.getInstance().getSpotifyService().getPlaylistsForCategory(categoryId, options, new Callback<PlaylistsPager>() { @Override public void success(PlaylistsPager playlistsPager, Response response) { mAdapter.addAll(mAdapter.size(), playlistsPager.playlists.items); } @Override public void failure(RetrofitError error) { } }); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); VerticalGridPresenter gridPresenter = new VerticalGridPresenter(); gridPresenter.setNumberOfColumns(NUM_COLUMNS); setGridPresenter(gridPresenter); BusProvider.getInstance().register(this); } @Override public void onDestroy() { BusProvider.getInstance().unregister(this); super.onDestroy(); } }