Android Custom Click Listener pour empêcher plusieurs clics rapides


Exemple

Afin d' empêcher un bouton de se déclencher plusieurs fois dans un court laps de temps (disons 2 clics en moins d'une seconde, ce qui peut causer de sérieux problèmes si le flux n'est pas contrôlé), on peut implémenter un SingleClickListener personnalisé.

Ce ClickListener définit un intervalle de temps spécifique comme seuil (par exemple, 1000 ms).
Lorsque vous cliquez sur le bouton, une vérification est effectuée pour voir si le déclencheur a été exécuté au cours de la période de temps que vous avez définie et sinon, il le déclenchera.

public class SingleClickListener implements View.OnClickListener {

    protected int defaultInterval;
    private long lastTimeClicked = 0;

    public SingleClickListener() {
        this(1000);
    }

    public SingleClickListener(int minInterval) {
        this.defaultInterval = minInterval;
    }

    @Override
    public void onClick(View v) {
        if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {
            return;
        }
        lastTimeClicked = SystemClock.elapsedRealtime();
        performClick(v);
    }

    public abstract void performClick(View v);

}

Et dans la classe, SingleClickListener est associé au Button en jeu

myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener(new SingleClickListener() {
    @Override
    public void performClick(View view) {
        // do stuff
    }
});