2014-01-27 170 views
2

我在我的与7个片段应用一个viewpager,各自代表自己的逻辑Viewpager与片段

然而,也有相互耦合2个片段,一个不能没有其他存在。

我有2个按钮,在切换片段的屏幕底部的上一个和下一个。

我想使它所以在viewpager挥动无法到达再加片段之一

现在我这样做:我把第一个片段(耦合者的)是在位置0,第二个片段位于最后一个位置,这样当您左右滑动时,就可以最后到达第二个耦合片段。

我想让它,所以你无法与刷卡

如何做到这一点的最后一个片段?

编辑:

片段适配器

public class PurchaseFragmentStatePagerAdapter extends FragmentStatePagerAdapter { 

private List<BaseFragment> fragments; 
private boolean shouldShowLastFragment; 
@Inject 
public PurchaseFragmentStatePagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

public void setFragments(List<BaseFragment> fragments) { 
    this.fragments = fragments; 
} 

@Override 
public BaseFragment getItem(int position) { 
    return fragments.get(position); 
} 

@Override 
public int getCount() { 
    return fragments == null ? 0 : shouldShowLastFragment ? fragments.size() : fragments.size()-1; 
} 

public void enableItem(int i) { 
    shouldShowLastFragment = true; 
    notifyDataSetChanged(); 
} 

public void disableItem(int i) { 

    shouldShowLastFragment = false; 
    notifyDataSetChanged(); 
} 

}

+0

在我看来,你通过实现setFragments(List fragments)来打破适配器的目的。相反,您应该重写getItem(int position),如Erix在其答案中所示,让适配器实例化各个片段。我怀疑这也是我的答案出错的地方。 – cYrixmorten

回答

0

我假设你有一张FragmentStatePagerAdapter或FragmentPagerAdapter。

在您的适配器中,将getCount()方法设置为6,将确保您无法到达最后一个片段。

@Override 
public int getCount() { 
    return 6; 
} 
+0

我仍然可以通过setCurrentItem(6)以编程方式达到它? –

+0

如果你的getItem(position)方法支持它,我会这么认为,是的 – cYrixmorten

+0

或者你可以在getCount方法中有一些逻辑,比如'return(shouldShowLastFragment)? 7:6;'启用/禁用最后一个片段。 – cYrixmorten