diff --git a/app/src/main/java/be/digitalia/fosdem/fragments/BaseLiveListFragment.java b/app/src/main/java/be/digitalia/fosdem/fragments/BaseLiveListFragment.java index e585f31..1494baa 100644 --- a/app/src/main/java/be/digitalia/fosdem/fragments/BaseLiveListFragment.java +++ b/app/src/main/java/be/digitalia/fosdem/fragments/BaseLiveListFragment.java @@ -2,6 +2,7 @@ package be.digitalia.fosdem.fragments; import android.database.Cursor; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.support.v7.widget.DividerItemDecoration; @@ -24,6 +25,11 @@ public abstract class BaseLiveListFragment extends RecyclerViewFragment implemen @Override protected void onRecyclerViewCreated(RecyclerView recyclerView, Bundle savedInstanceState) { + Fragment parentFragment = getParentFragment(); + if (parentFragment instanceof RecycledViewPoolProvider) { + recyclerView.setRecycledViewPool(((RecycledViewPoolProvider) parentFragment).getRecycledViewPool()); + } + recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext())); recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL)); recyclerView.setAdapter(adapter); diff --git a/app/src/main/java/be/digitalia/fosdem/fragments/LiveFragment.java b/app/src/main/java/be/digitalia/fosdem/fragments/LiveFragment.java index 2353723..a88a88d 100644 --- a/app/src/main/java/be/digitalia/fosdem/fragments/LiveFragment.java +++ b/app/src/main/java/be/digitalia/fosdem/fragments/LiveFragment.java @@ -6,28 +6,49 @@ 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; -import be.digitalia.fosdem.R; +public class LiveFragment extends Fragment implements RecycledViewPoolProvider { -public class LiveFragment extends Fragment { + 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); - ViewPager pager = (ViewPager) view.findViewById(R.id.pager); - pager.setAdapter(new LivePagerAdapter(getChildFragmentManager(), getResources())); - SlidingTabLayout slidingTabs = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs); - slidingTabs.setViewPager(pager); + 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;