package net.miz_hi.smileessence.view.fragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
public class NamedFragmentPagerAdapter extends FragmentStatePagerAdapter
{
private ArrayList<NamedFragment> pageList = new ArrayList<NamedFragment>();
private HashMap<String, NamedFragment> pageMap = new HashMap<String, NamedFragment>();
public NamedFragmentPagerAdapter(FragmentManager fm, Collection<NamedFragment> fragments)
{
this(fm);
pageList.addAll(fragments);
}
public NamedFragmentPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public synchronized CharSequence getPageTitle(int position)
{
return pageList.get(position).getTitle();
}
@Override
public synchronized int getCount()
{
return pageList.size();
}
public List<NamedFragment> getList()
{
return pageList;
}
public synchronized void add(NamedFragment element)
{
pageList.add(element);
pageMap.put(element.getTitle(), element);
}
public synchronized void addAll(Collection<NamedFragment> list)
{
pageList.addAll(list);
for(NamedFragment fragment : list)
{
pageMap.put(fragment.getTitle(), fragment);
}
}
public synchronized void set(NamedFragment element, int index)
{
pageList.add(index, element);
pageMap.put(element.getTitle(), element);
}
public synchronized NamedFragment getByName(String name)
{
return pageMap.get(name);
}
public synchronized void remove(int i)
{
NamedFragment fragment = pageList.get(i);
remove(fragment);
}
public synchronized void remove(String name)
{
NamedFragment fragment = pageMap.get(name);
if(fragment != null)
{
remove(fragment);
}
}
public synchronized void remove(NamedFragment element)
{
pageList.remove(element);
pageMap.remove(element.getTitle());
if(element instanceof IRemovable)
{
((IRemovable) element).onRemoved();
}
}
public synchronized void clear()
{
pageList.clear();
}
@Override
public Fragment getItem(int position)
{
return pageList.get(position);
}
@Override
public int getItemPosition(Object object)
{
int index = pageList.indexOf(object);
return index != -1 ? index : POSITION_NONE;
}
}