JayJona
JayJona

Reputation: 502

how to prevent double (or more) tap on viewpager

I have a viewpager where each page, if clicked, starts an activity. Now, it happens that if I click several times on a page before the activity starts, more activities are opened with the same page. how to avoid it? I simply have this method in my viewpager adapter. Write in the comments if you need other code.

ViewPagerAdapter.java

public class ViewPagerAdapter extends PagerAdapter {

    public ViewPagerAdapter() {
        /*****/
    }

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

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view.equals(o);
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, final int position) {
        layoutInflater = LayoutInflater.from(context);
        View view = layoutInflater.inflate(R.layout.item_viewpager, container, false);

        /*****/

        container.addView(view, 0);

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (position == 0) { //SINGLEPLAYER
                    Intent newGameActivity = new Intent(context, com.game.project.GameActivity.class);
                    context.startActivity(newGameActivity);

                }else{
                  Intent newGameActivity = new Intent(context, com.game.project.GameActivity.class);
                  context.startActivity(profileActivity);
                }
        });

        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View)object);
    }

}

Upvotes: 0

Views: 266

Answers (1)

Davi
Davi

Reputation: 1081

Inside your onClick() unregister the listener by:

view.setOnClickListener(null)

This way, once clicked you cannot click again. Remember to register the click listener again onResume() if you come back to the page.

Another way is to disable the view itself after clicking it by calling isEnabled(false) inside your onClick():

view.isEnabled(false)

Upvotes: 3

Related Questions