как предотвратить двойное (или более) нажатие на viewpager - PullRequest
0 голосов
/ 17 июня 2019

У меня есть окно просмотра, где каждая страница, если нажать на нее, запускает действие. Теперь случается так, что если я щелкаю несколько раз на странице перед началом действия, на одной странице открывается больше действий. как этого избежать? У меня просто есть этот метод в моем адаптере ViewPager. Напишите в комментариях, если вам нужен другой код.

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);
    }

}

1 Ответ

3 голосов
/ 17 июня 2019

Внутри onClick () отмените регистрацию слушателя по:

view.setOnClickListener(null)

Таким образом, после щелчка вы не сможете щелкнуть снова.Не забудьте снова зарегистрировать прослушиватель щелчков onResume (), если вы вернетесь на страницу.

Другой способ - отключить само представление после щелчка по нему, вызвав isEnabled (false) внутри onClick ():

view.isEnabled(false)
...