如何将String Array添加到选项卡布局并删除android中选项卡布局中的现有项目

时间:2016-09-20 09:58:15

标签: android android-tablayout

我的Tab布局包含11项。我需要从选项卡布局中删除现有项目,并且只需要显示所选项目,例如只有4项而不是11.Below是我的code.am,我选择的项目在(str)“String [] str = constants中。 selectedCategories;”我现在需要做的就是我需要设置一个带有Str中项目的tablayout。我能实现这个目标。

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;

    }
}

1 个答案:

答案 0 :(得分:0)

  

我建议您使用 SELECT phonecalls.CusID, COUNT(0) AS failedcalls, phonenumber, success.firstsuccess FROM phonecalls LEFT JOIN (SELECT min(Date) AS firstsuccess, CusID, phonenumber FROM phonecalls WHERE Duration IS NOT NULL GROUP BY CusID, phonenumber) success ON phonecalls.CusID = success.CusID AND phonecalls.phonenumber = success.phonenumber AND phonecalls.Date < success.firstsuccess GROUP BY phonecalls.CusID, phonecalls.phonenumber, success.firstsuccess; 代替   FragmentStatePagerAdapter作为viewpager中的片段数量   不是静态的,并且有大量的片段页面。

您需要在ViewPagerAdapter的构造函数中传递片段及其名称的列表,无论何时您想要添加或删除片段,您只需从列表中删除或添加片段并通知适配器。

FragmentPagerAdapter

初始化ViewPager

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");
           .....

        }
    };

添加片段

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

删除片段

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