I have created a image slider using ViewPager2, I need a functionality that when I swipe up the image should be removed. I already worked with RecyclerView. So I remember I can use ItemTouchHelper.SimpleCallback for swipe to remove functionality. But attachToRecyclerView method requires a RecyclerView not a ViewPager2 even though viewpager2 uses RecyclerView adapter.
Kotlin:
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.UP) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
}
}).attachToRecyclerView(binding.viewPager)

The
RecyclerViewof theViewPager2is not accessible by default, but you can enforce its accessibility using reflection.In that you need to access the
RecyclerViewby reflecting its declared field name usinggetDeclaredField(), and forRecyclerViewit is: mRecyclerView (you can check it in theViewPager2class)Then use
setAccessible()to make this field accessible in order to allow using it for theItemTouchHelper.Here is an extension function to return the
ViewPager2ReyclerView:And you can use it like:
Preview:
UPDATE:
Thanks to @SimpleAndroid answer, there is a nice way for obtaining the
RecyclerView: