隐藏FragmentPagerAdapter中的选项卡

时间:2015-04-21 09:29:36

标签: android pagerslidingtabstrip

我需要在特定条件下隐藏第二个标签,我已经尝试了以下方式,Tab隐藏,文本也发生了变化,但片段没有改变,我的意思是,如果我隐藏第二个标签然后我得到{ {1}} [第二个标签的内容]在第三个标签上,

FragmentStep2

我不知道这里有什么问题。

1 个答案:

答案 0 :(得分:1)

我建议你只将位置传递给适配器的getItem方法。

 @Override
    public Fragment getItem(int i) {
        Fragment fragment = new DemoObjectFragment();
        Bundle args = new Bundle();
        args.putInt(DemoObjectFragment.ARG_OBJECT, i); // Our object is just an integer :-P
        fragment.setArguments(args);
        return fragment;
    }

之后,您可以从对象列表(您的页面)中获取位置并检查条件(显示或不显示)。

DemoObjectFragment

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_collection_object, container, false);
        Bundle args = getArguments();
        FragmentPageToShow tempFragmentPage = fragmentDataList.get(args.getInt(ARG_OBJECT));

创建片段页面适配器时使用相同的对象列表。

public static class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {

    private Fragment mCurrentFragment;

    public Fragment getCurrentFragment() {
        return mCurrentFragment;
    }

    public DemoCollectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fragment = new DemoObjectFragment();
        Bundle args = new Bundle();
        args.putInt(DemoObjectFragment.ARG_OBJECT, i); // Our object is just an integer :-P
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        // For this contrived example, we have a 100-object collection.
        return fragmentDataList.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentDataList.get(position).name;
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        if (getCurrentFragment() != object) {
            mCurrentFragment = ((Fragment) object);
        }
        super.setPrimaryItem(container, position, object);

    }
}

不要为每个页面创建FragmentStepX个类。只需使用一个片段并正确传递数据。

最初只创建数据对象的数组列表,仅显示'对象以显示'或者在数组列表更改时动态刷新适配器。

在设置/刷新适配器之前,您始终可以显示要显示的项目列表。