【发布时间】:2021-02-17 20:34:12
【问题描述】:
我对 android 还很陌生,并制作了一个视图,在该视图中,我根据一组名称填充了许多选项卡。
我已成功完成此操作,但我想在我的选项卡开头添加一个附加选项卡,其标题将为所有项目。
这是我用于创建动态标签的方法:
private void tabsInit() {
for (int l = 0; l < internalCat.size(); l++) {
product_tabs_layout.addTab(product_tabs_layout.newTab().setText(internalCat.get(l)));
}
ProductPagerAdapter adapter = new ProductPagerAdapter(getSupportFragmentManager(), product_tabs_layout.getTabCount(), internalCat);
product_viewpager.setAdapter(adapter);
product_viewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(product_tabs_layout));
product_tabs_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
product_viewpager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
product_viewpager.setCurrentItem(tab.getPosition());
}
});
}
适配器:
public class ProductPagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
List<String> lstInternalCats;
public ProductPagerAdapter(@NonNull FragmentManager fm, int mNumOfTabs, List<String> lstInternalCats) {
super(fm);
this.mNumOfTabs = mNumOfTabs;
this.lstInternalCats = lstInternalCats;
}
@NonNull
@Override
public Fragment getItem(int position) {
return new ProductsFragment().newInstance(lstInternalCats.get(position));
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
这是输出:
我想要的是这样的附加标签:
我尝试在循环外添加选项卡,然后将 tabscount+1 传递给选项卡数,但它给了我错误。
java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
有没有办法。请帮忙。
【问题讨论】:
标签: android android-fragments android-viewpager android-tabs