package org.smartpaws.viewpager; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.smartpaws.MainActivity; import org.smartpaws.R; import org.smartpaws.fragments.DealerFragment; import org.smartpaws.fragments.ErrorOfflineFragment; import org.smartpaws.fragments.MapDealersFragment; import org.smartpaws.net.DataMan; import org.smartpaws.net.ResponseHandler; import org.smartpaws.objects.Convention; import org.smartpaws.objects.User; public class DealerViewPager extends Fragment { private static final int IMAGE_COUNT_PER_FRAGMENT = 2; private volatile int fetchedCount; @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final int containerId = getArguments().getInt("container_id"); final View loading = inflater.inflate(R.layout.frag_loading, container, false); DataMan.getConvention("confuzzled", new ResponseHandler<Convention>() { @Override public void result(Convention result) { if (result == null) { MainActivity.INSTANCE.getSupportFragmentManager() .beginTransaction() .replace(containerId, new ErrorOfflineFragment()) .commit(); return; } showFragment(containerId, result); } }); return loading; } private synchronized boolean pollAllFetched(int gohCount) { fetchedCount++; return fetchedCount == (IMAGE_COUNT_PER_FRAGMENT * gohCount); } private void showFragment(int containerId, Convention convention) { final Fragment fragment = new DealerViewPagerFragment(); final Bundle bundle = new Bundle(); bundle.putSerializable("dealers", convention.getDealers()); fragment.setArguments(bundle); MainActivity.INSTANCE.getSupportFragmentManager() .beginTransaction() .replace(containerId, fragment) .commit(); } public static class DealerViewPagerFragment extends Fragment { private ViewPager mPager; private PagerAdapter mPagerAdapter; private User[] dealers; @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.dealers = (User[]) getArguments().getSerializable("dealers"); View root = inflater.inflate(R.layout.view_pager, null); mPagerAdapter = new DealerViewPagerAdapter(MainActivity.INSTANCE.getSupportFragmentManager()); mPager = (ViewPager) root.findViewById(R.id.pager); mPager.setAdapter(mPagerAdapter); return root; } private DealerFragment createFragment(User[] dealers) { DealerFragment fragment = new DealerFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("dealers", dealers); fragment.setArguments(bundle); return fragment; } private class DealerViewPagerAdapter extends FragmentStatePagerAdapter { public DealerViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int pos) { if (pos == 0) { return createFragment(dealers); } else { return new MapDealersFragment(); } } @Override public int getCount() { return 2; } } } }