package what.whatandroid.artist;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
import api.torrents.artist.Artist;
import what.whatandroid.callbacks.LoadingListener;
/**
* Pager adapter for displaying two fragments showing the artist picture + releases
* and description, tags and similar artists
*/
public class ArtistPagerAdapter extends FragmentPagerAdapter implements LoadingListener<Artist> {
/**
* The fragments showing artist img + releases and artist description information
*/
private ArtistReleasesFragment releasesFragment;
private ArtistDescriptionFragment descriptionFragment;
/**
* The artist being viewed
*/
private Artist artist;
public ArtistPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position){
switch (position){
case 0:
return new ArtistReleasesFragment();
default:
return new ArtistDescriptionFragment();
}
}
@Override
public int getCount(){
return 2;
}
@Override
public CharSequence getPageTitle(int position){
switch (position){
case 0:
return "Releases";
default:
return "Description";
}
}
@Override
public Object instantiateItem(ViewGroup container, int position){
Fragment f = (Fragment)super.instantiateItem(container, position);
if (position == 0){
releasesFragment = (ArtistReleasesFragment)f;
}
else {
descriptionFragment = (ArtistDescriptionFragment)f;
}
if (artist != null){
((LoadingListener<Artist>)f).onLoadingComplete(artist);
}
return f;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object){
super.destroyItem(container, position, object);
switch (position){
case 0:
releasesFragment = null;
break;
default:
descriptionFragment = null;
break;
}
}
@Override
public void onLoadingComplete(Artist data){
artist = data;
if (releasesFragment != null){
releasesFragment.onLoadingComplete(artist);
}
if (descriptionFragment != null){
descriptionFragment.onLoadingComplete(artist);
}
}
}