1

I moved from ViewPager to ViewPager2. Since there's no way to set a clickable callback to ViewPager2 or extend it to be clickable, I did this:

public class ViewPagerFragment extends Fragment {
    ViewPager2 viewPagerTop;
    ViewPager2Adapter viewPager2TopAdapter;
    ClickableListener topClickableListener;

    public interface ClickableListener {
        public void on(int position);
        public boolean onLong(int position);
    }

    public void setOnClickTop(ClickableListener clickableListener) {
        topClickableListener = clickableListener;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
        viewPagerTop = view.findViewById(R.id.viewPagerTop);

        viewPagerTop.setOnLongClickListener(v -> {
            Log.d("AAA", "long clicked!");
            int position = viewPagerTop.getCurrentItem();
            return topClickableListener.onLong(position);
        });
        viewPagerTop.setOnClickListener(v -> {
            Log.d("AAA", "clicked!");
            int position = viewPagerTop.getCurrentItem();
            topClickableListener.on(position);
        });

but it won't work. I see nothing on log.

Paprika
  • 402
  • 5
  • 18

1 Answers1

0

After initialising the view add this yourPager.setUserInputEnabled(false); I face same issue by adding this line i am able to perform longClickAction on viewPager

Manav Adhyaru
  • 211
  • 2
  • 3