package what.whatandroid.torrentgroup.torrent; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.util.SparseArray; import android.view.ViewGroup; import api.torrents.torrents.TorrentGroup; import what.whatandroid.callbacks.LoadingListener; /** * Adapter for swiping through the torrents in the group */ public class TorrentPagerAdapter extends FragmentStatePagerAdapter implements LoadingListener<TorrentGroup> { private SparseArray<TorrentDetailFragment> fragments; private TorrentGroup torrentGroup; public TorrentPagerAdapter(FragmentManager fm){ super(fm); fragments = new SparseArray<TorrentDetailFragment>(); } @Override public Fragment getItem(int position){ if (torrentGroup != null){ return TorrentDetailFragment.newInstance(torrentGroup.getResponse().getTorrents().get(position)); } return new TorrentDetailFragment(); } @Override public int getCount(){ if (torrentGroup != null){ return torrentGroup.getResponse().getTorrents().size(); } return 1; } @Override public CharSequence getPageTitle(int position){ if (torrentGroup != null){ return torrentGroup.getResponse().getTorrents().get(position).getShortTitle(); } return "Loading..."; } @Override public Object instantiateItem(ViewGroup container, int position){ TorrentDetailFragment f = (TorrentDetailFragment)super.instantiateItem(container, position); if (torrentGroup != null){ f.onLoadingComplete(torrentGroup.getResponse().getTorrents().get(position)); } fragments.put(position, f); return f; } @Override public void destroyItem(ViewGroup container, int position, Object object){ super.destroyItem(container, position, object); fragments.remove(position); } @Override public void onLoadingComplete(TorrentGroup data){ torrentGroup = data; for (int i = 0; i < fragments.size(); ++i){ int pos = fragments.keyAt(i); fragments.get(pos).onLoadingComplete(torrentGroup.getResponse().getTorrents().get(pos)); } } }