在某些开发过程中,细心的编程者可能会发现出现双次点击效果,会出现两次点击事件,现在就来解决一下这个问题,不废话,直接上代码,欢迎各位大神批评指点:
先自定义一个类,名叫NoDoubleClickListener,让它实现View.OnClickListener接口:
public abstract class NoDoubleClickListener implements View.OnClickListener {
//两次点击效果间隔时间为1s,如果超过此时间再次点击会响应该点击事件,否者认为重复点击
public static final int MIN_CLICK_DELAY_TIME = 1000;
//默认上一次点击时间是0s
private long lastClickTime = 0;
@Override
public void onClick(View view) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(view);
}
}
protected abstract void onNoDoubleClick(View view);
}
这就是解决重复点击事件的核心代码,现在看看它是怎么使用的:
holder.mMrlayout.setOnClickListener(new NoDoubleClickListener() {
@Override
protected void onNoDoubleClick(View v) {
//书写逻辑代码
}
});
在需要使用的地方,照样实现点击事件,然后直接new 出NoDoubleClickListener类的对象。把逻辑代码写入即可。
这就是解决重复点击的问题