2014-03-07 90 views
0

我有了3個片段一個ViewPager:如何在viewpager中切換片段?

VP = new SettingsScrollViewPager(this); 
    VP.setScrollDurationFactor(4); 
    VP.setId("ST".hashCode()); 
    setContentView(VP); 

    // add fragments 
    ArrayList<Fragment> fragmentsContainer = appHelper.addFragments( 
     new SettingsFragment(), 
     new SearchFragment(), 
     new FavoritesFragment() 
    ); 

    VP.setAdapter(new SettingsFPA(getSupportFragmentManager(), fragmentsContainer)); 
    VP.setOffscreenPageLimit(1); 
    VP.setCurrentItem(0); 

我想SearchFragment更換FavoritesFragment一個按鈕被點擊後,但我怎麼做呢?它應該是這樣的:

ArrayList<Fragment> fragmentsContainer = appHelper.addFragments( 
     new SettingsFragment(), 
     new FavoritesFragment(), 
     new SearchFragment() 
    ); 

這是我的適配器的樣子:

public class SettingsFPA extends FragmentPagerAdapter { 

private static ArrayList<Fragment> mFragments; 

public SettingsFPA(FragmentManager manager, ArrayList<Fragment> container) { 
    super(manager); 
    mFragments = container; 
} 

@Override 
public int getCount() { 
    return mFragments.size(); 
} 

@Override 
public Fragment getItem(int position) { 
    return mFragments.get(position); 
} 

}

我應該換指數1與指數2,這就是我想實現的,所以任何幫助將不勝感激!

+0

不能更換'PagerAdapter'用一個新的,具有所需的順序? – gunar

+0

是的,但我真的不想這樣做,它不工作,因爲我想看到。爲什麼沒有替代或添加碎片的方法?這很煩人。 – Xarialon

+0

你可以改變片段數組列表中的索引並調用notifyDataSetChanged() – ZealDeveloper

回答

1

讓我知道,如果這個工程:

按鈕點擊SettingsFPA類

public void swapFragments() { 
    Collections.swap(mFragments, 1, 2); 
    notifyDataSetChanged(); 
} 

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

從活動通話swapFragments內創建方法:

mSettinfsFPAAdapter.swapFragments(); 
+0

嘿熱氣,它成功了!謝謝哥們。 :) – Xarialon