gpt4 book ai didi

java - 可以在运行时在 ViewPager 中添加/删除选项卡吗?

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:52 25 4
gpt4 key购买 nike

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Log.v(TAG, "onCreateView");

View rootView = inflater.inflate(R.layout.fragment_home, container, false);

// setting up the view pager and tab layout
mViewPager = (ViewPager) rootView.findViewById(R.id.view_pager);
mTabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout);
PageAdapter adapter = new PageAdapter(getFragmentManager());
mViewPager.setAdapter(adapter);

mTabLayout.setupWithViewPager(mViewPager);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));

return rootView;
}

我的自定义寻呼机适配器如下所示:

public class PageAdapter extends FragmentStatePagerAdapter {

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

@Override
public Fragment getItem(int position) {
return new GroupTabFragment(position);
}

@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position) {
case 0:
title = "Game"; // this is from a template, i have to
break; // return title dynamically
case 1:
title = "Movie";
break;
}
return title;
}

@Override
public int getCount() {
return 2; // the tabs number is a subject of change
} // i don't know it from the begining
}

我遇到的问题是我必须在单击按钮时添加或删除选项卡,或者类似的东西。

每个选项卡都会显示一个经典的对象列表。谢谢。

最佳答案

尽管 ViewPager 有两种方法可以做到这一点不适合动态删除:

1) 通过 ArrayList<Fragment> data作为 PageAdapter 的参数

Adapter 看起来像这样:

public class PageAdapter extends FragmentStatePagerAdapter {
private ArrayList<Fragment> data;

public PageAdapter(FragmentManager fm, ArrayList<Fragment> data) {
super(fm);
this.data = data;
}

@Override
public Fragment getItem(int position) {
return data.get(position);
}

@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position) {
case 0:
title = "Game"; // this is from a template, i have to
break; // return title dynamically
case 1:
title = "Movie";
break;
}
return title;
}

@Override
public int getCount() {
return data.size(); // the tabs number is a subject of change
} // i don't know it from the begining

要删除您在 Activity\Fragment 中执行的项目:

data.remove(fragmentId);
adapter.notifyDataSetChanged();

2) 每次要删除项目时重新创建适配器。因此,您基本上使用新数据创建了新的适配器。

data.remove(fragmentId);
PageAdapter adapter = new PageAdapter(getFragmentManager(), data);
mViewPager.setAdapter(adapter);

关于java - 可以在运行时在 ViewPager 中添加/删除选项卡吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36221476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com