如何防止两次(或多次)点击viewpager

时间:2019-06-17 16:39:10

标签: android android-viewpager onclicklistener

我有一个viewpager,在其中单击每个页面都会启动一个活动。现在,如果我在活动开始之前在页面上单击几次,则会在同一页面上打开更多活动。 如何避免呢? 我只是在我的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 个答案:

答案 0 :(得分:3)

在您的onClick()内部通过以下方式取消注册侦听器:

view.setOnClickListener(null)

这样,一旦单击,便无法再次单击。返回页面时,请记住在onResume()上再次注册点击侦听器。

另一种方法是在单击onClick()内的isEnabled(false)后单击视图以禁用视图本身。

view.isEnabled(false)