package com.justsystems.hpb.pad; import java.lang.ref.WeakReference; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; public class CustomFragmentStatePagerAdapter extends FragmentStatePagerAdapter { private final int[] blogIds; private final WeakReference<SiteThumbnailFragment>[] fragments; public CustomFragmentStatePagerAdapter(FragmentManager fm, int[] blogIds) { super(fm); this.blogIds = blogIds; this.fragments = (WeakReference<SiteThumbnailFragment>[]) new WeakReference<?>[blogIds.length]; } @Override public Fragment getItem(int index) { WeakReference<SiteThumbnailFragment> reference = fragments[index]; SiteThumbnailFragment fragment; if (reference == null || (fragment = reference.get()) == null) { fragment = new SiteThumbnailFragment(); Bundle bundle = new Bundle(); bundle.putInt("id", this.blogIds[index]); fragment.setArguments(bundle); this.fragments[index] = new WeakReference<SiteThumbnailFragment>( fragment); } return fragment; } @Override public int getCount() { return this.blogIds.length; } /** * 指定されたインデックスのブログIDを返します。 * * @param position * @return */ public int getCurrentBlogId(int position) { return this.blogIds[position]; } public void onConfigurationChanged() { for (int i = 0; i < fragments.length; i++) { WeakReference<SiteThumbnailFragment> reference = fragments[i]; SiteThumbnailFragment fragment; if (reference == null || (fragment = reference.get()) == null) { continue; } fragment.optimizeImageSize(-1); } } }