如何防止双击(或更多)点击 viewpager
how to prevent double (or more) tap on viewpager
我有一个 viewpager,如果点击每个页面,就会启动一个 activity。现在,如果我在 activity 开始之前在一个页面上单击几次,则会在同一页面打开更多活动。
如何避免呢?
我只是在我的 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);
}
}
在您的 onClick() 中通过以下方式取消注册侦听器:
view.setOnClickListener(null)
这样一点击就不能再点击了。如果您返回页面,请记得再次注册点击侦听器 onResume()。
另一种方法是通过在 onClick() 中调用 isEnabled(false) 来禁用视图本身:
view.isEnabled(false)
我有一个 viewpager,如果点击每个页面,就会启动一个 activity。现在,如果我在 activity 开始之前在一个页面上单击几次,则会在同一页面打开更多活动。 如何避免呢? 我只是在我的 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);
}
}
在您的 onClick() 中通过以下方式取消注册侦听器:
view.setOnClickListener(null)
这样一点击就不能再点击了。如果您返回页面,请记得再次注册点击侦听器 onResume()。
另一种方法是通过在 onClick() 中调用 isEnabled(false) 来禁用视图本身:
view.isEnabled(false)