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.ErrorOfflineFragment; import org.smartpaws.fragments.ReminderFragment; import org.smartpaws.net.DataMan; import org.smartpaws.net.ResponseHandler; import org.smartpaws.objects.Convention; import java.util.Calendar; import java.util.Date; public class ReminderViewPager extends Fragment { @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, null); 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; } Fragment fragment = new ReminderViewPagerFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("convention", result); fragment.setArguments(bundle); MainActivity.INSTANCE.getSupportFragmentManager() .beginTransaction() .replace(containerId, fragment) .commit(); } }); return loading; } public static class ReminderViewPagerFragment extends Fragment { private ViewPager mPager; private PagerAdapter mPagerAdapter; private Convention convention; @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.convention = (Convention) getArguments().getSerializable("convention"); View root = inflater.inflate(R.layout.view_pager, null); mPagerAdapter = new ReminderViewPagerAdapter(MainActivity.INSTANCE.getSupportFragmentManager()); mPager = (ViewPager) root.findViewById(R.id.pager); mPager.setAdapter(mPagerAdapter); return root; } private ReminderFragment createFragment(Convention convention, int day) { ReminderFragment fragment = new ReminderFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("convention", convention); bundle.putInt("day", day); fragment.setArguments(bundle); return fragment; } private class ReminderViewPagerAdapter extends FragmentStatePagerAdapter { public ReminderViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return createFragment(convention, position); } @Override public int getCount() { return convention.getDuration(); } } } }