如何添加字符串数组标签布局和删除现有的项目在标签布局在android



我有11项的制表布局。我需要从选项卡布局中删除现有的项目,只需要显示选中的项目,例如只有4个项目,而不是11个。下面是我的代码。我选择的项目在(str)中。"String [] str = constants.selectedCategories;"所有我现在需要做的是,我需要设置一个tablayout与项目在str .我怎么能做到这一点。

viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);

下面是viewpagerAdapter代码

public class ViewPagerAdapter extends FragmentPagerAdapter {
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        if (position == 0) {
            fragment = new FashionFragment();
        } else if (position == 1) {
            fragment = new JewelFragment();
        } else if (position == 2) {
            fragment = new RestaurantFragment();
        } else if (position == 3) {
            fragment = new SuperMarketFragment();
        } else if (position == 4) {
            fragment = new HomeApplianceFragment();
        } else if (position == 5) {
            fragment = new MobileStoreFragment();
        } else if (position == 6) {
            fragment = new MotorFragment();
        } else if (position == 7) {
            fragment = new ConstructionElectricalFragment();
        } else if (position == 8) {
            fragment = new SalonFragment();
        } else if (position == 9) {
            fragment = new BakeryFragment();
        }
        else if (position == 10) {
            fragment = new OtherFragment();
        }
        return fragment;
    }
    @Override
    public int getCount() {
        return 11;
    }

   @Override
    public CharSequence getPageTitle(int position) {
        String title = null;
        if (position == 0) {
            title = "Fashion";
        } else if (position == 1) {
            title = "Jewellery";
        } else if (position == 2) {
            title = "Restaurant";
        } else if (position == 3) {
            title = "Super Market";
        } else if (position == 4) {
            title = "Home Appliance";
        } else if (position == 5) {
            title = "Mobile & Computer accessories";
        } else if (position == 6) {
            title = "Motors";
        } else if (position == 7) {
            title = "Construction & Electricals";
        } else if (position == 8) {
            title = "Saloon & Spa";
        } else if (position == 9) {
            title = "Bakkery & Sweets";
        }
        else if (position == 10) {
            title = "Others";
        }
        return title;
    }
}

我建议你用FragmentStatePagerAdapter代替FragmentPagerAdapter作为您的viewpage中的片段数不是静态的,有大量的片段页。

你需要在ViewPagerAdapter的构造函数中传递一个片段列表和它的名字,每当你想要添加或删除片段时,你只需要从列表中删除或添加片段并通知适配器。

public class ViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
private ArrayList<String> fragmentName;
public ViewPagerAdapter(FragmentManager fm, ArrayList<String> name, ArrayList<Fragment> list) {
    super(fm);
    this.fragmentList = list;
    this.fragmentName = name;
}

@Override
public Fragment getItem(int position) {
    return fragmentList.get(position);
}
@Override
public int getCount() {
    return fragmentList.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return fragmentName.get(position);
}
public void addTab(Fragment fragment, String name) {
        fragmentList.add( fragment);
        fragmentName.add( name);
}
public void removeTab(int position) {
    fragmentList.remove(position);
    fragmentName.remove(position);
}
} 
ArrayList<Fragment> fragmentList;
fragmentList = new ArrayList<Fragment>();
fragmentList.add(new Fashion());
fragmentList.add(new Jewellery());
fragmentList.add(new Restaurent());
.....
ArrayList<String> name;
name = new ArrayList<String>() {
        {
            add("Fashion");
            add("Jewellery");
            add("Restaurent");
           .....
        }
    };

初始化:viewpage

viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),name,fragmentList);
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);

添加片段

viewPagerAdapter.addTab(new Motors(),"Motors");
viewPagerAdapter.notifyDataSetChanged();

删除片段

viewPagerAdapter.removeTab(3);
viewPagerAdapter.notifyDataSetChanged();

最新更新