I have a viewpager that pages through fragments. My FragmentPagerAdapter
subclass creates a new fragment in the getItem
method which seems wasteful. Is there a FragmentPagerAdapter
equivalent to the convertView
in the listAdapter
that will enable me to reuse fragments that have already been created? My code is below.
public class ProfilePagerAdapter extends FragmentPagerAdapter {
ArrayList<Profile> mProfiles = new ArrayList<Profile>();
public ProfilePagerAdapter(FragmentManager fm) {
super(fm);
}
/**
* Adding a new profile object created a new page in the pager this adapter is set to.
* @param profile
*/
public void addProfile(Profile profile){
mProfiles.add(profile);
}
@Override
public int getCount() {
return mProfiles.size();
}
@Override
public Fragment getItem(int position) {
return new ProfileFragment(mProfiles.get(position));
}
}
The FragmentPagerAdapter
already caches the Fragments
for you. Each fragment is assigned a tag, and then the FragmentPagerAdapter
tries to call findFragmentByTag
. It only calls getItem
if the result from findFragmentByTag
is null
. So you shouldn't have to cache the fragments yourself.