package what.whatandroid.request; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.ViewGroup; import api.requests.Request; import what.whatandroid.callbacks.LoadingListener; /** * Fragment pager adapter to show the request details and comments */ public class RequestPagerAdapter extends FragmentPagerAdapter implements LoadingListener<Request> { /** * The request details and comments fragments being shown */ private RequestDetailFragment detail; private RequestCommentsFragment comments; private DescriptionFragment description; private Request request; public RequestPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position) { case 0: return new RequestDetailFragment(); case 1: return new DescriptionFragment(); default: return new RequestCommentsFragment(); } } @Override public int getCount() { return 3; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "Request"; case 1: return "Description"; default: return "Comments"; } } @Override public Object instantiateItem(ViewGroup container, int position) { Fragment f = (Fragment) super.instantiateItem(container, position); if (position == 0) { detail = (RequestDetailFragment) f; if (request != null) { detail.onLoadingComplete(request); } } else if (position == 1) { description = (DescriptionFragment) f; if (request != null) { description.onLoadingComplete(request.getResponse().getDescription()); } } else { comments = (RequestCommentsFragment) f; if (request != null) { comments.onLoadingComplete(request); } } return f; } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); switch (position) { case 0: detail = null; break; case 1: description = null; break; default: comments = null; } } @Override public void onLoadingComplete(Request data) { request = data; if (detail != null) { detail.onLoadingComplete(data); } if (description != null) { description.onLoadingComplete(request.getResponse().getDescription()); } if (comments != null) { comments.onLoadingComplete(data); } } }