package pasta.music.fragments; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import com.afollestad.async.Action; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; import pasta.music.Pasta; import pasta.music.R; import pasta.music.adapters.OmniAdapter; import pasta.music.data.CategoryListData; import pasta.music.data.PlaylistListData; import pasta.music.utils.PreferenceUtils; public class CategoryFragment extends FullScreenFragment { @Bind(R.id.topTenTrackListView) RecyclerView recycler; @Bind(R.id.progressBar2) ProgressBar spinner; @Bind(R.id.toolbar) Toolbar toolbar; OmniAdapter adapter; GridLayoutManager manager; CategoryListData data; Action action; int limit; Pasta pasta; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = DataBindingUtil.inflate(inflater, R.layout.fragment_category, container, false).getRoot(); ButterKnife.bind(this, rootView); pasta = (Pasta) getContext().getApplicationContext(); data = getArguments().getParcelable("category"); limit = (PreferenceUtils.getLimit(getContext()) + 1) * 10; toolbar.setTitle(data.categoryName); toolbar.setNavigationIcon(R.drawable.ic_back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity().onBackPressed(); } }); setData(data.categoryName, PreferenceUtils.getPrimaryColor(getContext()), PreferenceUtils.getPrimaryColor(getContext())); spinner.setVisibility(View.VISIBLE); manager = new GridLayoutManager(getContext(), PreferenceUtils.getColumnNumber(getContext(), false)); if (PreferenceUtils.isCards(getContext())) { manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return manager.getSpanCount(); } }); } recycler.setLayoutManager(manager); adapter = new OmniAdapter((AppCompatActivity) getActivity(), null, false); recycler.setAdapter(adapter); recycler.setHasFixedSize(true); action = new Action<List<PlaylistListData>>() { @NonNull @Override public String id() { return "getCategoryPlaylists"; } @Nullable @Override protected List<PlaylistListData> run() throws InterruptedException { return pasta.getPlaylists(data); } @Override protected void done(@Nullable List<PlaylistListData> result) { if (spinner != null) spinner.setVisibility(View.GONE); if (result == null) { pasta.onCriticalError(getActivity(), "category playlists action"); return; } adapter.swapData(result); } }; action.execute(); return rootView; } @Override public void onDestroyView() { super.onDestroyView(); if (action != null && action.isExecuting()) action.cancel(); ButterKnife.unbind(this); } }