Wie kann ich mit ViewPager in Android dynamisch einen Tab erstellen?
Erläuterung
Angenommen, ich habe mehrere Kategorien, die aus meinem REST stammen. Ich weiß nicht, wie viele Kategorien es sein können, 5,7 oder manchmal 2 usw. Ich möchte alle Kategorien mit dem ViewPager auf meinem Tab ablegen. Ich möchte eine Registerkarte erstellen, die der Größe der Kategorien entspricht. mal sehen, z. Angenommen, in meiner REST-Antwort gibt es nur zwei Kategorien. Es werden nur zwei Registerkarten erstellt. Wenn es 5 Kategorien hat, dann 5 Reiter und so weiter.
Hier ist das Beispiel für einen Test zum Erstellen von Registerkarten.
MainActivity.java
public class MainActivity extends AppCompatActivity {
TabLayout tabLayout;
ViewPager viewPager;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout=(TabLayout)findViewById(R.id.tabs);
viewPager=(ViewPager)findViewById(R.id.viewpager);
setupViewPager(viewPager);
viewPager.setCurrentItem(0);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
for(int i=0;i<3;i++){
adapter.addFragment(new OneFragment(), "ONE");
// adapter.addFragment(new TwoFragment(), "TWO");
viewPager.setAdapter(adapter);
}
}
}
ViewPagerAdapter.java
public class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager){
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment,String title){
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Bitte, wie kann ich das lösen ???