0

I converted my old viewPager adapter to the new viewPager2 adapter. I get error when i setAdapter to viewPager2.

setAdapter(androidx.viewpager.widget.RecycleView.Adapter) in ViewPager2 can not be applied to ViewPagerAdapter

enter image description here

my ViewPagerAdapter

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

    /**
     * Contains all the fragments.
     */
    private List<Fragment> fragments = new ArrayList<>();

    /**
     * Creates a new PagerAdapter instance.
     *
     * @param fragmentManager The FragmentManager.
     */
    public ViewPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

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

    /**
     * Adds the fragment to the list, also adds the fragment's tab title.
     *
     * @param fragment New instance of the Fragment to be associated with this tab.
     */
    public void addFragment(Fragment fragment) {
        fragments.add(fragment);
    }
}
Amir Dora.
  • 2,831
  • 4
  • 40
  • 61

1 Answers1

1

Wrong type of adapter need to change to FragmentStateAdapter https://developer.android.com/reference/androidx/viewpager2/adapter/FragmentStateAdapter

See https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2#setAdapter(androidx.recyclerview.widget.RecyclerView.Adapter)

If you're planning to use Fragments as pages, implement FragmentStateAdapter

Andrew
  • 8,198
  • 2
  • 15
  • 35
  • Thanks @Andrew but i won't be able to use BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT – Amir Dora. Mar 24 '20 at 17:43
  • In my previous question you suggested me to use ViewPager2 adapter, i converted but now having this issue. – Amir Dora. Mar 24 '20 at 17:45
  • Viewpager2 only does the same behaviour as `BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT `, viewpager with `BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ` set or viewpager2 both only resume the current Fragment ( see https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-alpha06 when they implemented that in viewpager2 ) hence the reason for the option of viewpager2 – Andrew Mar 24 '20 at 19:31