Search code examples
androidrunnableandroid-handler

Delayed action after last button click


I want my ImageButton image to be changed after some time after last click.

ImageButton b = ...
b.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
    b.removeCallbacks(null);
    b.postDelayed(new Runnable() {
      @Override
      public void run() {
        b.setImageResource(android.R.drawable.ic_delete);
      }
    }, 1500);
  }
});

This code doesn't work. Line removing callbacks returns true, but doesn't remove any callbacks. If I'm clicking button again and again it will change image after 1,5s after first click.


Solution

  • Try this one?

     public void onClick(View v) {
        b.removeCallbacks(clickRunnable);
        b.postDelayed(clickRunnable, 1500);
      }
    
    
      Runnable clickRunnable = new Runnable() {
          @Override
          public void run() {
            b.setImageResource(android.R.drawable.ic_delete);
          }
        };