Skip to content Skip to sidebar Skip to footer

Recyclerview Within Viewpager Not Working

so I'm working on an app that utilizes a fixed 2 tabs within a view pager. I have a RecyclerView inside of a ViewPager but the RecyclerView is not responding to horizontal swipes.

Solution 1:

For that you need to off viewpager swaping both are not working at same time.

Too disable swip of viewpager use below code

publicclassMyViewPagerextendsViewPager {

    privateboolean enabled;

    publicCustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.enabled = true; // default swipe enable is true
    }

    @OverridepublicbooleanonTouchEvent(MotionEvent event) {
        if (this.enabled) {
            returnsuper.onTouchEvent(event);
        }

        returnfalse;
    }

    @OverridepublicbooleanonInterceptTouchEvent(MotionEvent event) {
        if (this.enabled) {
            returnsuper.onInterceptTouchEvent(event);
        }

        returnfalse;
    }
    // true - enable swipe // false - disable swipepublicvoidsetPagingEnabled(boolean enabled) {
        this.enabled = enabled;
    } 
}

and use below code while using viewpager in .xml file

<package.MyViewPager 
    android:id="@+id/viewPager" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" />

Hope these answer helps you.

These same approach you can use use it for recyclerview also if you required in future.

Hope these help you.

Solution 2:

You can use fragment to show RecycleView. For example: You will create a class Adapter to manage.

publicclassHomeFragmentAdapterextendsFragmentPagerAdapter {
privatefinal ArrayList<Fragment> mFragment = newArrayList<>();
privatefinal ArrayList<String> mFragmentTitle = newArrayList<>();

publicHomeFragmentAdapter(FragmentManager fragmentManager){
    super(fragmentManager);
}

publicvoidaddFragment(Fragment fragment, String title){
    mFragment.add(fragment);
    mFragmentTitle.add(title);
}

@Overridepublic Fragment getItem(int position) {
    return mFragment.get(position);
}

@OverridepublicintgetCount() {
    return mFragment.size();
}

@Overridepublic CharSequence getPageTitle(int position) {
    return mFragmentTitle.get(position);
}

}

And after that you will add more fragment which include any RecycleView you need.

publicclassHomeFragmentextendsFragment {
publicstatic TabLayout tabLayout;
publicstatic ViewPager viewPager;
Menu mMenu;

publicHomeFragment(){

}

@OverridepublicvoidonCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    Viewview= inflater.inflate(R.layout.fragment_layout_home, null);
    tabLayout = (TabLayout) view.findViewById(R.id.tab_home);
    viewPager = (ViewPager) view.findViewById(R.id.viewpager_home);

    if(viewPager != null){
        setupViewPager(viewPager);
    }

    tabLayout.setTabMode(TabLayout.MODE_FIXED);
    tabLayout.setupWithViewPager(viewPager);

    return view;
}

privatevoidsetupViewPager(ViewPager viewPager){
    HomeFragmentAdapteradapter=newHomeFragmentAdapter(getChildFragmentManager());
    adapter.addFragment(newExpenseFragment(), "Expense");
    adapter.addFragment(newIncomeFragment(), "Income");
    viewPager.setAdapter(adapter);
}

T hope it could been help you.

Post a Comment for "Recyclerview Within Viewpager Not Working"