/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.util.LruCache;
import android.support.v4.view.PagerAdapter;
import android.view.View;
/**
*
* @author sihai
*
*/
public abstract class EsFragmentPagerAdapter extends PagerAdapter {
private FragmentTransaction mCurTransaction;
private Fragment mCurrentPrimaryItem;
private LruCache mFragmentCache;
private final FragmentManager mFragmentManager;
private OnFragmentPagerListener mPagerListener;
public EsFragmentPagerAdapter(FragmentManager fragmentmanager)
{
mCurTransaction = null;
mCurrentPrimaryItem = null;
mFragmentCache = new FragmentCache(5);
mFragmentManager = fragmentmanager;
}
public void destroyItem(View view, int i, Object obj)
{
if(mCurTransaction == null)
mCurTransaction = mFragmentManager.beginTransaction();
Fragment fragment = (Fragment)obj;
String s = fragment.getTag();
if(s == null)
s = makeFragmentName(view.getId(), i);
mFragmentCache.put(s, fragment);
mCurTransaction.detach(fragment);
}
public final void finishUpdate$3c7ec8c3()
{
if(mCurTransaction != null)
{
mCurTransaction.commitAllowingStateLoss();
mCurTransaction = null;
mFragmentManager.executePendingTransactions();
}
}
public abstract Fragment getItem(int i);
public Object instantiateItem(View view, int i)
{
if(mCurTransaction == null)
mCurTransaction = mFragmentManager.beginTransaction();
String s = makeFragmentName(view.getId(), i);
mFragmentCache.remove(s);
Fragment fragment = mFragmentManager.findFragmentByTag(s);
if(fragment != null)
{
mCurTransaction.attach(fragment);
} else
{
fragment = getItem(i);
mCurTransaction.add(view.getId(), fragment, s);
}
if(fragment != mCurrentPrimaryItem)
fragment.setMenuVisibility(false);
return fragment;
}
public final boolean isViewFromObject(View view, Object obj)
{
// TODO
return false;
}
protected String makeFragmentName(int i, int j)
{
return (new StringBuilder("android:switcher:")).append(i).append(":").append(j).toString();
}
public final void restoreState(Parcelable parcelable, ClassLoader classloader)
{
}
public final Parcelable saveState()
{
return null;
}
public final void setFragmentPagerListener(OnFragmentPagerListener onfragmentpagerlistener)
{
mPagerListener = onfragmentpagerlistener;
}
public final void setPrimaryItem$7e55ba3e(Object obj)
{
Fragment fragment = (Fragment)obj;
if(fragment != mCurrentPrimaryItem)
{
if(mCurrentPrimaryItem != null)
mCurrentPrimaryItem.setMenuVisibility(false);
if(fragment != null)
fragment.setMenuVisibility(true);
mCurrentPrimaryItem = fragment;
}
if(mPagerListener != null)
mPagerListener.onPageActivated(fragment);
}
private final class FragmentCache extends LruCache
{
protected final void entryRemoved(boolean flag, Object obj, Object obj1, Object obj2)
{
Fragment fragment = (Fragment)obj1;
Fragment fragment1 = (Fragment)obj2;
if(flag || fragment1 != null && fragment != fragment1)
mCurTransaction.remove(fragment);
}
public FragmentCache(int i)
{
super(5);
}
}
public static interface OnFragmentPagerListener
{
public abstract void onPageActivated(Fragment fragment);
}
}