package be.digitalia.fosdem.fragments;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import be.digitalia.fosdem.R;
import be.digitalia.fosdem.widgets.SlidingTabLayout;
public class LiveFragment extends Fragment implements RecycledViewPoolProvider {
static class ViewHolder {
ViewPager pager;
SlidingTabLayout slidingTabs;
RecyclerView.RecycledViewPool recycledViewPool;
}
private ViewHolder holder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_live, container, false);
holder = new ViewHolder();
holder.pager = (ViewPager) view.findViewById(R.id.pager);
holder.pager.setAdapter(new LivePagerAdapter(getChildFragmentManager(), getResources()));
holder.slidingTabs = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
holder.slidingTabs.setViewPager(holder.pager);
holder.recycledViewPool = new RecyclerView.RecycledViewPool();
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
holder = null;
}
@Override
public RecyclerView.RecycledViewPool getRecycledViewPool() {
return (holder == null) ? null : holder.recycledViewPool;
}
private static class LivePagerAdapter extends FragmentPagerAdapter {
private final Resources resources;
public LivePagerAdapter(FragmentManager fm, Resources resources) {
super(fm);
this.resources = resources;
}
@Override
public int getCount() {
return 2;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new NextLiveListFragment();
case 1:
return new NowLiveListFragment();
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return resources.getString(R.string.next);
case 1:
return resources.getString(R.string.now);
}
return null;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// Allow the non-primary fragments to start as soon as they are visible
Fragment f = (Fragment) super.instantiateItem(container, position);
f.setUserVisibleHint(true);
return f;
}
}
}