в ViewPager адаптер моего фрагмента выглядит примерно так. я хочу, чтобы вместо этого это был список массивов

#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);