#java #android
#java #Android
Вопрос:
для начала: я использовал этот адаптер для создания своих фрагментов, и он работает хорошо. но я хочу использовать список массивов для их создания. второе: у меня около 600 фрагментов в разных ViewPager у вас есть какие-либо идеи, как я могу сократить некоторый код?
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
//*******************
//*********************
//********************* I want this dynamic (using ArrayList)
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return Word1.newInstance("Word # 1",1);
case 1: // Fragment # 0 - This will show FirstFragment different title
return Word2.newInstance("Word # 2",2);
case 2: // Fragment # 1 - This will show SecondFragment
return Word3.newInstance("Word # 3",3);
case 3: // Fragment # 1 - This will show SecondFragment
return Word4.newInstance("Word # 4",4);
default:
return Empty.newInstance("Word");
Ответ №1:
создайте адаптер пейджера следующим образом
public class PagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public PagerAdapter(FragmentManager fm, Context context) {
super(fm);
}
@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);
}
}
используйте его таким образом в своей деятельности
PagerAdapter mPagerAdapterExam = new PagerAdapter(getSupportFragmentManager(), this);
mPagerAdapterExam.addFragment(new CurrentOrdersFragment(), "Current Orders");
mPagerAdapterExam.addFragment(new PastOrdersFragment(), "Past Orders");
mViewPager.setAdapter(mPagerAdapterExam);
mTabLayout.setupWithViewPager(mViewPager);