Вам просто нужно изменить то, что возвращается в зависимости от типа пользователя, используя if
или другой switch
например
@Override
public Fragment getItem(int position) {
if ( getUserType().equals("admin"){
switch (position){
case 0:
return ProfileFragment.newInstance("","");
case 1:
return ManageOrdersFragment.newInstance("","");
case 2:
return ManageSellers.newInstance("","");
case 3:
return SettingsFragment.newInstance("","");
default:
return ProfileFragment.newInstance("","");
}
} else if (getUserType().equals("seller"){
switch (position){
case 0:
return ProfileFragment.newInstance("","");
case 1:
return ProductsFragment.newInstance("","");
case 2:
return SettingsFragment.newInstance("","");
default:
return ProfileFragment.newInstance("","");
} else {
switch (position){
case 0:
return ProfileFragment.newInstance("","");
case 1:
return SettingsFragment.newInstance("","");
default:
return ProfileFragment.newInstance("","");
}
}
, убедившись, что ваши getPageTitles
и getCount
match
например,
@Override
public CharSequence getPageTitle(int position) {
if ( getUserType().equals("admin"){
switch (position){
case 0:
return "Profile";
case 1:
return "Orders;
case 2:
return "Sellers;
case 3:
return "Settings";
default:
return "Profile";
}
} else if (getUserType().equals("seller"){
switch (position){
case 0:
return "Profile";
case 1:
return "Products";
case 2:
return "Settings";
default:
return "Profile";
} else {
switch (position){
case 0:
return "Profile";
case 1:
return "Settings";
default:
return "Profile";
}
@Override
public int getCount() {
if ( getUserType().equals("admin"){
return 4;
} else if (getUserType().equals("seller"){
return 3;
} else {
return 2;
}
}
И в этом случае метод getUserType()
возвращает строку, соответствующую вашему типу пользователя, но вы, вероятно, уже сохранили ее, так что настройте ее на соответствие. Если у вас нет чего-то легкодоступного, вы можете настроить конструктор вашего адаптера так, чтобы он брал дополнительный параметр
например
class ViewPagerAdapter extends FragmentStatePagerAdapter {
private String userType;
ViewPagerAdapter(FragmentManager fm, String userType) {
super(fm);
this.userType = userType;
}
......
, а затем при создании адаптера
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),"admin");
Хотя это, вероятно, не самый эффективный способ сделать это, просто показать, что вы могли бы структурировать данные для хранения того, какой тип пользователя имеет, какие вкладки и, возможно, есть более оптимальные способы организации условных выражений.