一般在做提交订单或者发起联网请求的操作时候,需要处理连续点击的问题,这个有很多处理方案,
比如,设置标记 tag,发起请求之后就设置按钮不可点击等等,下面的只是其中一种,代码如下:
import android.util.Log;
import android.view.View;
import java.util.Calendar;
/**
* Created by lpq on 2017/7/18.
* 防连点
*/
public abstract class NoDoubleListener implements View.OnClickListener {
public static final int MIN_CLICK_DELAY_TIME = 3000;
private static final String TAG ="NoDoubleListener" ;
private long lastClickTime = 0;
@Override
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(v);
}else {
Log.w(TAG,"点击过快");
}
}
protected abstract void onNoDoubleClick(View v);
}
使用方式:
public class DemoActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
TextView tv = (TextView) findViewById(R.id.tv_btn);
tv.setOnClickListener(new NoDoubleListener() {
@Override
protected void onNoDoubleClick(View v) {
Toast.makeText(DemoActivity.this,"点击了按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
class TestActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
val tv = findViewById(R.id.test_tv) as TextView
tv.setOnClickListener(object : NoDoubleListener() {
override fun onNoDoubleClick(v: View) {
Toast.makeText(this@TestActivity,"点击了按钮",Toast.LENGTH_SHORT).show()
}
})
}
}